code: func ExtractFilesTxn(ctx context.Context, files []fs.File, dest fs.TransactionalDestination, withManifest pkg.ManifestMode) (extracted []pkg.FileInfo, err error) {
  	if err := dest.Begin(ctx); err != nil {
  		return nil, err
  	}
  
  	// Cleanup the garbage even on panics.
  	defer func() {
  		endErr := dest.End(ctx, err == nil)
  		if err == nil {
  			err = endErr
  		} else if endErr != nil {
  			// Log endErr, but return the original error from ExtractFiles.
  			logging.Warningf(ctx, "Failed to cleanup the destination after failed extraction - %s", endErr)
  		}
  	}()
  
  	return ExtractFiles(ctx, files, dest, withManifest)
  }
docs: // ExtractFilesTxn is like ExtractFiles, but it also opens and closes
  // the transaction over fs.TransactionalDestination object.
  //
  // It guarantees that if extraction fails for some reason, there'll be no
  // garbage laying around.