code: def call_rpc(self, rpc_id, payload=bytes()):
          
  
          # If we define the RPC locally, call that one.  We use this for reporting
          # our status
          if super(ServiceDelegateTile, self).has_rpc(rpc_id):
              return super(ServiceDelegateTile, self).call_rpc(rpc_id, payload)
  
          async def _awaitable_wrapper():
  
              # FIXME: We set the timeout here to a very large number since we don't
              # know what an appropriate timeout is and don't want to restrict the
              # run time of RPCs that could be long running.  The caller of the RPC
              # through the tile will know what an appropriate timeout is for the
              # RPC that they are trying to call.
              resp = await self._client.send_rpc(self._service, rpc_id, payload, timeout=120.0)
              result = resp['result']
  
              if result == 'success':
                  return resp['response']
              elif result == 'service_not_found':
                  raise TileNotFoundError("Could not find service by name", name=self._service)
              elif result == 'rpc_not_found':
                  raise RPCNotFoundError("Could not find RPC on service", name=self._service, rpc_id=rpc_id)
              elif result == 'invalid_arguments':
                  raise RPCInvalidArgumentsError("Invalid arguments to RPC", name=self._service, rpc_id=rpc_id)
              elif result == 'invalid_response':
                  raise RPCInvalidReturnValueError("Invalid response from RPC", name=self._service, rpc_id=rpc_id)
              elif result == 'execution_exception':
                  raise InternalError("Exception raised during processing RPC", name=self._service, rpc_id=rpc_id)
              else:
                  raise InternalError("Unknown response received from delegated RPC", name=self._service, rpc_id=rpc_id, result=result)
  
          return _awaitable_wrapper()
docs: Call an RPC by its ID.
  
          Args:
              rpc_id (int): The number of the RPC
              payload (bytes): A byte string of payload parameters up to 20 bytes
  
          Returns:
              str: The response payload from the RPC