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