docs: def request(self, request_method, api_method, *args, **kwargs):
          """Perform a request.
  
          Args:
              request_method: HTTP method for this request.
              api_method: API method name for this request.
              *args: Extra arguments to pass to the request.
              **kwargs: Extra keyword arguments to pass to the request.
  
          Returns:
              A dict contains the request response data.
  
          Raises:
              RequestFailedError: Raises when BearyChat's OpenAPI responses
                  with status code != 2xx
          """
          url = self._build_url(api_method)
          resp = requests.request(request_method, url, *args, **kwargs)
  
          try:
              rv = resp.json()
          except ValueError:
              raise RequestFailedError(resp, 'not a json body')
  
          if not resp.ok:
              raise RequestFailedError(resp, rv.get('error'))
  
          return rv