docs: def download(self,
                   url,
                   dst,
                   params=None,
                   cache_cb=None,
                   overwrite=False,
                   stream=False,
                   minimal_size=-1,
                   maximum_size=1024 ** 6,
                   **kwargs):
          """
          Download binary content to destination.
  
          :param url: binary content url
          :param dst: path to the 'save_as' file
          :param cache_cb: (optional) a function that taking requests.Response
              as input, and returns a bool flag, indicate whether should update the cache.
          :param overwrite: bool,
          :param stream: bool, whether we load everything into memory at once, or read
              the data chunk by chunk
          :param minimal_size: default -1, if response content smaller than
            minimal_size, then delete what just download.
          :param maximum_size: default 1GB, if response content greater than
            maximum_size, then delete what just download.
          """
          response = self.get(
              url,
              params=params,
              cache_cb=cache_cb,
              stream=stream,
              **kwargs
          )
  
          if not overwrite:  # pragma: no cover
              if os.path.exists(dst):
                  raise OSError("'%s' exists!" % dst)
  
          if stream:
              chunk_size = 1024 * 1024
              downloaded_size = 0
              with atomic_write(dst, mode="wb") as f:
                  for chunk in response.iter_content(chunk_size):
                      if not chunk:  # pragma: no cover
                          break
                      f.write(chunk)
                      downloaded_size += chunk_size
                  if (downloaded_size < minimal_size) or (downloaded_size > maximum_size):
                      self.raise_download_oversize_error(
                          url, downloaded_size, minimal_size, maximum_size)
          else:
              content = response.content
              downloaded_size = sys.getsizeof(content)
              if (downloaded_size < minimal_size) or (downloaded_size > maximum_size):
                  self.raise_download_oversize_error(
                      url, downloaded_size, minimal_size, maximum_size)
              else:
                  with atomic_write(dst, mode="wb") as f:
                      f.write(content)