docs: def _request(self, method, path='/', url=None, ignore_codes=[], **kwargs):
          """
          Performs HTTP request.
  
          :param str method: An HTTP method (e.g. 'get', 'post', 'PUT', etc...)
  
          :param str path: A path component of the target URL.  This will be
              appended to the value of ``self.endpoint``.  If both :attr:`path`
              and :attr:`url` are specified, the value in :attr:`url` is used and
              the :attr:`path` is ignored.
  
          :param str url: The target URL (e.g.  ``http://server.tld/somepath/``).
              If both :attr:`path` and :attr:`url` are specified, the value in
              :attr:`url` is used and the :attr:`path` is ignored.
  
          :param ignore_codes: List of HTTP error codes (e.g.  404, 500) that
              should be ignored.  If an HTTP error occurs and it is *not* in
              :attr:`ignore_codes`, then an exception is raised.
          :type ignore_codes: list of int
  
          :param kwargs: Any other kwargs to pass to :meth:`requests.request()`.
  
          Returns a :class:`requests.Response` object.
          """
          _url = url if url else (self.endpoint + path)
          r = self.s.request(method, _url, **kwargs)
          if not r.ok and r.status_code not in ignore_codes:
              r.raise_for_status()
          return HTTPResponse(r)