code: async def get_data(self, url):
          
          logger.debug('making request to %r', url)
          with aiohttp.ClientSession() as session:
              async with session.get(url, headers=self.headers) as response:
                  body = json.loads((await response.read()).decode('utf-8'))
                  if response.status == HTTPStatus.OK:
                      if url != self.url_builder('configuration'):
                          await self._update_config()
                      return body
                  elif response.status == HTTPStatus.TOO_MANY_REQUESTS:
                      timeout = self.calculate_timeout(
                          response.headers['Retry-After'],
                      )
                      logger.warning(
                          'Request limit exceeded, waiting %s seconds',
                          timeout,
                      )
                      await asyncio.sleep(timeout)
                      return await self.get_data(url)
                  logger.warning(
                      'request failed %s: %r',
                      response.status,
                      body.get('status_message', '<no message>')
                  )
docs: Get data from the TMDb API via :py:func:`aiohttp.get`.
  
          Notes:
            Updates configuration (if required) on successful requests.
  
          Arguments:
            url (:py:class:`str`): The endpoint URL and params.
  
          Returns:
            :py:class:`dict`: The parsed JSON result.