docs: def request(self, method, uri, **kw):
          """
          The money maker.
          """
          expect = kw.pop("expect", [])
          mime_body = kw.pop("mime_body", None)
  
          headers = kw.pop("headers", {})
          data = kw.pop("data", None)
  
          if mime_body:
              mimevalues = self.mimeobjects.get(mime_body.__class__)
  
              if not mimevalues:
                  raise ClientException(
                      ("Cannot handle object of type "
                       "{0!r}").format(mime_body.__class__))
  
              mapping = mimevalues[0]
  
              document_type, mimetype, validator = mapping
  
              data = document_type.render(validator, mime_body)
              headers["Content-Type"] = mimetype
  
          if uri[0] != '/':
              uri = '/' + uri
  
          url = "{self.scheme}://{self.host}{uri}".format(self=self, uri=uri)
  
          response = self.session.request(
              method, url,
              headers=headers,
              data=data,
              **kw)
  
          content_type = response.headers.get("Content-Type")
  
          if content_type is None or not response.content:
              return response, None
  
          mimetype, opts = werkzeug.http.parse_options_header(content_type)
  
          if mimetype not in self.mimetypes:
              raise ClientException(
                  "Cannot handle response type: {0}".format(mimetype))
  
          document_type, document_class, validator = self.mimetypes.get(mimetype)
  
          if expect and document_class not in expect:
              raise ClientException(
                  "Unexpected response type: {0}".format(mimetype))
  
          try:
              obj = document_type.parse(validator,
                                        document_class,
                                        response.content)
          except MimeValidationError as e:
              raise ClientException(
                  "Response format invalid: {0}".format(str(e)))
          except:
              log.error(
                  "Failed to parse content of type: {0}".format(mimetype),
                  exc_info=sys.exc_info())
              raise ClientException(
                  "Failed to parse content of type: {0}".format(mimetype))
  
          return response, obj