docs: def _request(self, method, uri, headers={}, body='', stream=False):
          """
          Given a Method, URL, Headers, and Body, perform and HTTP
          request, and return a 3-tuple containing the response status,
          response headers (as httplib.HTTPMessage), and response body.
          """
          response = None
          headers.setdefault('Accept',
                             'multipart/mixed, application/json, */*;q=0.5')
  
          if self._client._credentials:
              self._security_auth_headers(self._client._credentials.username,
                                          self._client._credentials.password,
                                          headers)
  
          try:
              self._connection.request(method, uri, body, headers)
              try:
                  response = self._connection.getresponse(buffering=True)
              except TypeError:
                  response = self._connection.getresponse()
  
              if stream:
                  # The caller is responsible for fully reading the
                  # response and closing it when streaming.
                  response_body = response
              else:
                  response_body = response.read()
          finally:
              if response and not stream:
                  response.close()
  
          return response.status, response.msg, response_body