code: def _download(self, resource):
      
      if isinstance(resource, six.string_types):
        resource = resource_lib.Resource(url=resource)
      url = resource.url
      if url in self._sizes_checksums:
        expected_sha256 = self._sizes_checksums[url][1]
        download_path = self._get_final_dl_path(url, expected_sha256)
        if not self._force_download and resource.exists_locally(download_path):
          logging.info('URL %s already downloaded: reusing %s.',
                       url, download_path)
          self._recorded_sizes_checksums[url] = self._sizes_checksums[url]
          return promise.Promise.resolve(download_path)
      # There is a slight difference between downloader and extractor here:
      # the extractor manages its own temp directory, while the DownloadManager
      # manages the temp directory of downloader.
      download_dir_path = os.path.join(
          self._download_dir,
          '%s.tmp.%s' % (resource_lib.get_dl_dirname(url), uuid.uuid4().hex))
      tf.io.gfile.makedirs(download_dir_path)
      logging.info('Downloading %s into %s...', url, download_dir_path)
  
      def callback(val):
        checksum, dl_size = val
        return self._handle_download_result(
            resource, download_dir_path, checksum, dl_size)
      return self._downloader.download(url, download_dir_path).then(callback)
docs: Download resource, returns Promise->path to downloaded file.