code: def _make_request(
      self,
      api_url: str,
      params: Optional[Dict] = None,
      data: Optional[Dict] = None,
      method: str = "GET",
  ) -> Union[Dict, object]:
      headers = {"Authorization": f"Bearer {self.access_token}"}
      if method == "GET":
          response = requests.get(
              api_url, headers=headers, params=params
          )
      elif method == "POST":
          response = requests.post(api_url, headers=headers, json=data)
      else:
          raise NotImplementedError(f"Method {method} not implemented")
      if response.status_code == 429:
          if "Retry-After" in response.headers:
              pause_time = float(response.headers["Retry-After"])
              time.sleep(pause_time)
              response = requests.get(
                  api_url, headers=headers, params=params
              )
      if response.status_code not in [200, 201]:
          raise requests.exceptions.RequestException(response.text)
      if response.headers["Content-Type"] == "application/octet-stream":
          raw_response = response.content
      else:
          raw_response = response.json()
      return raw_response
  
file_path: mindsdb/mindsdb/integrations/handlers/utilities/api_utilities/microsoft/ms_graph_api_utilities.py
imports: import time
  import requests
  from typing import Optional, Dict, Union, List
  from mindsdb.utilities import log
label_desc: Use image node_id 3 for calling the MSGraphAPIBaseClient obj's underlying member method code with example usage: obj._make_request(api_url, params, data, method) and returns: raw_response