docs: def _load(self, url):
          """
          Load from remote, but check local file content to identify duplicate content. If local file is found with
          same hash then it is used with metadata from remote object to avoid fetching full content.
  
          :param url:
          :return:
          """
          self._logger.debug('Loading url %s into resource cache' % url)
          retriever = get_resource_retriever(url)
          content_path = os.path.join(self.path, self._hash_path(url))
  
          try:
              if url in self.metadata:
                  headers = retriever.fetch(content_path, last_etag=self.metadata[url]['etag'], progress_bar=self.progress_bars)
                  if headers is None:
                      # no update, return what is already loaded
                      self._logger.info('Cached %s is up-to-date. No data download needed' % url)
                      return self.metadata[url]
              else:
                  headers = retriever.fetch(content_path, progress_bar=self.progress_bars)
                  if headers is None:
                      raise Exception('Fetch of %s failed' % url)
  
              if 'etag' not in headers:
                  # No Etag returned, so generate it
                  headers['etag'] = fs_util.calc_file_md5(content_path)
  
              # Populate metadata from the headers
              self.metadata[url] = headers.copy()
              self.metadata[url]['content'] = content_path
              return self.metadata[url]
          except:
              self._logger.error('Failed getting resource: %s')
  
              # forcibly flush local entry if found
              if url in self.metadata:
                  self.metadata.pop(url)
              raise
          finally:
              if url not in self.metadata:
                  self._logger.debug('Cleaning up on failed load of %s' % url)
                  # Cleanup on failure
                  if content_path is not None and os.path.exists(content_path):
                      os.remove(content_path)