def METHOD_NAME(self, request, token=None):
    if self.authentication and not token:
        token = self.authentication.token()
    if token:
        headers = {
            "User-Agent": self.USER_AGENT,
            "Content-Type": "application/json-rpc",
            "Authorization": token,
        }
    else:
        headers = {
            "User-Agent": self.USER_AGENT,
            "Content-Type": "application/json-rpc",
        }
    try:
        request_kwargs = {
            "url": self.uri,
            "data": json.dumps(request.to_hash()),
            "headers": headers,
        }
        self.log[0] = f"Request: {request_kwargs}"
        # print(self.log[0])
        resp = self.http.post(**request_kwargs)
        self.log[1] = f"Response: {resp.status_code} {resp.headers} {resp.text}"
        # print(self.log[1])
        self.response_data = resp.json()
        return resp.json()
    except Exception as e:  # Typically JSONDecodeError when error in resp.json()
        self.log[2] = f"Exception: {repr(e)}"
        return None