code: def _download_extract(self, resource):
      
      if isinstance(resource, six.string_types):
        resource = resource_lib.Resource(url=resource)
      def callback(path):
        resource.path = path
        return self._extract(resource)
      return self._download(resource).then(callback)
docs: Download-extract `Resource` or url, returns Promise->path.