def METHOD_NAME(self, method, path, params=None, payload=None):
    url = self._get_complete_url(path)
    params = self._get_params(params)
    # Create a new request session if no global session is defined
    if self.session is None:
        response = requests.request(
            method,
            url,
            params=params,
            data=json.dumps(payload) if payload else payload,
            headers=self.headers, timeout=self.timeout
        )
    # Use the global requests session the user provided
    else:
        response = self.session.request(
            method,
            url,
            params=params,
            data=json.dumps(payload) if payload else payload,
            headers=self.headers, timeout=self.timeout
        )
    response.raise_for_status()
    response.encoding = 'utf-8'
    return response.json()