Make a request to the StackExchange API, passing in the path, a
        callback, the access token, optional post arguments and keyword
        arguments to be added as values in the request body or URI

def stackexchange_request(self, path, callback, access_token=None,
                       post_args=None, **kwargs):
        """Make a request to the StackExchange API, passing in the path, a
        callback, the access token, optional post arguments and keyword
        arguments to be added as values in the request body or URI

        """
        url = self._API_URL + path
        all_args = {}
        if access_token:
            all_args["access_token"] = access_token
            all_args.update(kwargs)
        if all_args:
            url += "?" + auth.urllib_parse.urlencode(all_args)
        callback = self.async_callback(self._on_stackexchange_request, callback)
        http = self._get_auth_http_client()
        if post_args is not None:
            http.fetch(url, method="POST",
                       body=auth.urllib_parse.urlencode(post_args),
                       callback=callback)
        else:
            http.fetch(url, callback=callback)