code: async def dispatch(self, uri, body, headers):
          
          insecure = self.action.handler.session.insecure
          connector = aiohttp.TCPConnector(verify_ssl=(not insecure))
          session = aiohttp.ClientSession(connector=connector)
          async with session:
              response = await session.request(
                  self.action.method, uri, data=body,
                  headers=_prefer_json(headers))
              async with response:
                  # Fetch the raw body content.
                  content = await response.read()
  
                  # Debug output.
                  if self.action.handler.session.debug:
                      print(response)
  
                  # 2xx status codes are all okay.
                  if response.status // 100 != 2:
                      request = {
                          "body": body,
                          "headers": headers,
                          "method": self.action.method,
                          "uri": uri,
                      }
                      raise CallError(request, response, content, self)
  
                  # Decode from JSON if that's what it's declared as.
                  if response.content_type is None:
                      data = await response.read()
                  elif response.content_type.endswith('/json'):
                      data = await response.json()
                  else:
                      data = await response.read()
  
                  if response.content_type is None:
                      data = content
                  elif response.content_type.endswith('/json'):
                      # JSON should always be UTF-8.
                      data = json.loads(content.decode("utf-8"))
                  else:
                      data = content
  
                  return CallResult(response, content, data)
docs: Dispatch the call via HTTP.
  
          This is used by `call` and can be overridden to use a different HTTP
          library.