code: func NewTransfer() Transfer {
  	t := &transfer{
  		watchers:          make(map[chan struct{}]*Watcher),
  		running:           make(chan struct{}),
  		released:          make(chan struct{}),
  		broadcastSyncChan: make(chan struct{}),
  	}
  
  	// This uses context.Background instead of a caller-supplied context
  	// so that a transfer won't be cancelled automatically if the client
  	// which requested it is ^C'd (there could be other viewers).
  	t.ctx, t.cancel = context.WithCancel(context.Background())
  
  	return t
  }
docs: // NewTransfer creates a new transfer.