docs: def _download_without_backoff(url, as_file=True, method='GET', **kwargs):
      """
      Get the content of a URL and return a file-like object.
      """
      # Make requests consistently hashable for caching.
      # 'headers' is handled by requests itself.
      # 'cookies' and 'proxies' contributes to headers.
      # 'files' and 'json' contribute to data.
      for k in ['data', 'params']:
          if k in kwargs and isinstance(kwargs[k], dict):
              kwargs[k] = OrderedDict(sorted(kwargs[k].items()))
  
      kwargs_copy = dict(kwargs)
      if not _is_url_in_cache(method, url, **kwargs):
          now = datetime.datetime.now()
          _rate_limit_for_url(url, now)
          _rate_limit_touch_url(url, now)
  
      L.info("Download {}".format(url))
      if 'timeout' not in kwargs_copy:
          kwargs_copy['timeout'] = _TIMEOUT
      if 'headers' in kwargs_copy:
          head_dict = CaseInsensitiveDict(kwargs_copy['headers'])
          if 'user-agent' not in head_dict:
              head_dict['user-agent'] = _USER_AGENT
          kwargs_copy['headers'] = head_dict
      else:
          kwargs_copy['headers'] = CaseInsensitiveDict({'user-agent': _USER_AGENT})
  
      response = requests.request(method, url, **kwargs_copy)
  
      if logging.getLogger().isEnabledFor(logging.DEBUG):
          # This can be slow on large responses, due to chardet.
          L.debug('"{}"'.format(response.text))
  
      response.raise_for_status()
  
      if as_file:
          return BytesIO(response.content)
      else:
          return response