code: def fetch(self, request, callback=None, raise_error=True, **kwargs):
          
          # accepts request as string then convert it to HTTPRequest
          if isinstance(request, str):
              request = HTTPRequest(request, **kwargs)
  
          try:
              # The first request calls tornado-client ignoring the
              # possible exception, in case of 401 response,
              # renews the access token and replay it
              response = yield self._authorized_fetch(request,
                                                      callback,
                                                      raise_error=False,
                                                      **kwargs)
  
              if response.code == BAD_TOKEN:
                  yield self._token_manager.reset_token()
              elif response.error and raise_error:
                  raise response.error
              else:
                  raise gen.Return(response)
  
              # The request with renewed token
              response = yield self._authorized_fetch(request,
                                                      callback,
                                                      raise_error=raise_error,
                                                      **kwargs)
              raise gen.Return(response)
  
          except TokenError as err:
              yield self._token_manager.reset_token()
              raise err
docs: Executes a request by AsyncHTTPClient,
          asynchronously returning an `tornado.HTTPResponse`.
  
             The ``raise_error=False`` argument currently suppresses
             *all* errors, encapsulating them in `HTTPResponse` objects
             following the tornado http-client standard