Make a request.

        Use the `requests` module to actually perform the request.

        Args:
            `method`: The method to use.
            `path`: The path to the resource.
            `data`: Any data to send (for POST and PUT requests).
            `kwargs`: Other parameters for `requests`.
        Returns:
            The content of the response.
        Raises:
            An exception depending on the HTTP status code of the response.

def _make_request(self, method, path, data=None, **kwargs):
        """Make a request.

        Use the `requests` module to actually perform the request.

        Args:
            `method`: The method to use.
            `path`: The path to the resource.
            `data`: Any data to send (for POST and PUT requests).
            `kwargs`: Other parameters for `requests`.
        Returns:
            The content of the response.
        Raises:
            An exception depending on the HTTP status code of the response.
        """
        _logger.debug("Method for request is %s" % method)
        url = self._construct_full_url(path)
        _logger.debug("URL for request is %s" % url)
        self._auth_info.populate_request_data(kwargs)
        _logger.debug("The arguments are %s" % kwargs)

        # Add custom headers for the request
        if self._auth_info._headers:
            kwargs.setdefault('headers', {}).update(self._auth_info._headers)

        res = requests.request(method, url, data=data, **kwargs)

        if res.ok:
            _logger.debug("Request was successful.")
            return res.content.decode('utf-8')

        if hasattr(res, 'content'):
            _logger.debug("Response was %s:%s", res.status_code, res.content)
            raise self._exception_for(res.status_code)(
                res.content, http_code=res.status_code
            )
        else:
            msg = "No response from URL: %s" % res.request.url
            _logger.error(msg)
            raise NoResponseError(msg)