docs: async def _request(
              self,
              method: str,
              url: str,
              *,
              headers: dict = None,
              params: dict = None,
              json: dict = None) -> dict:
          """Make a request against the RainMachine device."""
          if not headers:
              headers = {}
  
          try:
              async with self._websession.request(method, url, headers=headers,
                                                  params=params,
                                                  json=json) as resp:
                  resp.raise_for_status()
                  data = await resp.json(content_type=None)
                  return data
          except ClientError as err:
              raise RequestError(
                  'Error requesting data from {}: {}'.format(url, err))