docs: async def _request(
              self,
              method: str,
              url: str,
              *,
              headers: dict = None,
              params: dict = None,
              json: dict = None) -> dict:
          """Make a request against AirVisual."""
          full_url = '{0}/{1}'.format(url, self.zip_code)
          pieces = urlparse(url)
  
          if not headers:
              headers = {}
          headers.update({
              'Content-Type': 'application/json',
              'Referer': '{0}://{1}'.format(pieces.scheme, pieces.netloc),
              'User-Agent': API_USER_AGENT
          })
  
          async with self._websession.request(method, full_url, headers=headers,
                                              params=params, json=json) as resp:
              try:
                  resp.raise_for_status()
                  data = await resp.json(content_type=None)
                  return data
              except client_exceptions.ClientError as err:
                  raise RequestError(
                      'Error requesting data from {0}: {1}'.format(url, err))