code: func (ut *UploadTracker) hashFile(path string) (isolated.HexDigest, error) {
  	if result, ok := ut.fileHashCache[path]; ok {
  		return result.digest, result.err
  	}
  
  	digest, err := ut.doHashFile(path)
  	ut.fileHashCache[path] = hashResult{digest, err}
  	return digest, err
  }
docs: // hashFile returns the hash of the contents of path, memoizing its results.