code: func (sm *SyncManager) QueueTx(tx *btcutil.Tx, peer *peerpkg.Peer, done chan struct{}) {
  	// Don't accept more transactions if we're shutting down.
  	if atomic.LoadInt32(&sm.shutdown) != 0 {
  		done <- struct{}{}
  		return
  	}
  
  	sm.msgChan <- &txMsg{tx: tx, peer: peer, reply: done}
  }
docs: // QueueTx adds the passed transaction message and peer to the block handling
  // queue. Responds to the done channel argument after the tx message is
  // processed.