code: def _request(
      self, full_url: str, body: Dict[str, Any], method: str
  ) -> Dict[str, Any]:
      if self.dry_run():
          logging.info(
              f"Dry run, would have requested a {method} to {full_url} with {body}"
          )
          return self.testing_response(method, full_url)
  
      logging.info(f"Requesting {method} to {full_url} with {body}")
      req = request.Request(
          full_url, headers=self.headers(), method=method.upper()
      )
      req.add_header("Content-Type", "application/json; charset=utf-8")
      data = json.dumps(body)
      data = data.encode("utf-8")
      req.add_header("Content-Length", len(data))
  
      try:
          with request.urlopen(req, data) as response:
              content = response.read()
      except error.HTTPError as e:
          msg = str(e)
          error_data = e.read().decode()
          raise RuntimeError(f"Error response: {msg}\n{error_data}")
  
      logging.info(f"Got response from {full_url}: {content}")
      try:
          response = json.loads(content)
      except json.decoder.JSONDecodeError as e:
          return content
  
      return response
  
imports: import json
  import subprocess
  import re
  import os
  import base64
  import logging
  from urllib import request, error
  from typing import Dict, Tuple, Any, Optional, List
label_desc: Use image node_id 6 for calling the GitHubRepo obj's underlying member method code with example usage: obj._request(full_url, body, method) and returns: response, self, content