'Executes a request, returning an `HTTPResponse`.
The request may be either a string URL or an `HTTPRequest` object.
If it is a string, we construct an `HTTPRequest` using any additional
kwargs: ``HTTPRequest(request, **kwargs)``
If an error occurs during the fetch, we raise an `HTTPError` unless
the ``raise_error`` keyword argument is set to False.'

def fetch(self, request, **kwargs):

    response = self._io_loop.run_sync(functools.partial(self._async_client.fetch, request, **kwargs))
    response.rethrow()
    return response
