Constructs and sends a request to a remote server.

        It returns a :class:`.Future` which results in a
        :class:`.HttpResponse` object.

        :param method: request method for the :class:`HttpRequest`.
        :param url: URL for the :class:`HttpRequest`.
        :param params: optional parameters for the :class:`HttpRequest`
            initialisation.

        :rtype: a coroutine

def request(self, method, url, **params):
        """Constructs and sends a request to a remote server.

        It returns a :class:`.Future` which results in a
        :class:`.HttpResponse` object.

        :param method: request method for the :class:`HttpRequest`.
        :param url: URL for the :class:`HttpRequest`.
        :param params: optional parameters for the :class:`HttpRequest`
            initialisation.

        :rtype: a coroutine
        """
        response = self._request(method, url, **params)
        if not self._loop.is_running():
            return self._loop.run_until_complete(response)
        else:
            return response