async def send_rpc(self, name, rpc_id, payload, timeout=1.0):
        """Send an RPC to a service and synchronously wait for the response.

        Args:
            name (str): The short name of the service to send the RPC to
            rpc_id (int): The id of the RPC we want to call
            payload (bytes): Any binary arguments that we want to send
            timeout (float): The number of seconds to wait for the RPC to finish
                before timing out and returning

        Returns:
            dict: A response dictionary with 1 or 2 keys set
                'result': one of 'success', 'service_not_found',
                    or 'rpc_not_found', 'timeout'
                'response': the binary response object if the RPC was successful
        """

        msg = dict(name=name, rpc_id=rpc_id, payload=payload, timeout=timeout)

        try:
            resp = await self.send_command(OPERATIONS.CMD_SEND_RPC, msg,
                                           MESSAGES.SendRPCResponse, timeout=timeout + 1)
        except asyncio.TimeoutError:
            resp = dict(result='timeout', response=b'')

        return resp
Send an RPC to a service and synchronously wait for the response.

        Args:
            name (str): The short name of the service to send the RPC to
            rpc_id (int): The id of the RPC we want to call
            payload (bytes): Any binary arguments that we want to send
            timeout (float): The number of seconds to wait for the RPC to finish
                before timing out and returning

        Returns:
            dict: A response dictionary with 1 or 2 keys set
                'result': one of 'success', 'service_not_found',
                    or 'rpc_not_found', 'timeout'
                'response': the binary response object if the RPC was successful