def make_rpc_call(self, request, long_timeout=False):
        """
        Method to send a request over the underlying interface, and await a response.
        The request is minimally validated before it is sent, and the response is similarly
        validated before being returned.
        Any read-timeout is respected unless 'long_timeout' is passed, in which case the call
        blocks indefinitely awaiting a response.

        Parameters
        ----------
        long_timeout : bool
            Whether to wait indefinitely for the response.

        Returns
        -------
        dict
            The (minimally validated) response message received, as a dict
        """
        # Write outgoing request message
        assert isinstance(request, dict)
        assert 'id' in request and len(request['id']) > 0
        assert 'method' in request and len(request['method']) > 0
        assert len(request['id']) < 16 and len(request['method']) < 32
        self.write_request(request)

        # Read and validate incoming message
        reply = self.read_response(long_timeout)
        self.validate_reply(request, reply)

        return reply

        Method to send a request over the underlying interface, and await a response.
        The request is minimally validated before it is sent, and the response is similarly
        validated before being returned.
        Any read-timeout is respected unless 'long_timeout' is passed, in which case the call
        blocks indefinitely awaiting a response.

        Parameters
        ----------
        long_timeout : bool
            Whether to wait indefinitely for the response.

        Returns
        -------
        dict
            The (minimally validated) response message received, as a dict
        
electrum/plugins/jade/jadepy/jade.py