code: func (pm *ProtocolManager) syncer() {
  	// Start and ensure cleanup of sync mechanisms
  	//pm.fetcher.Start()
  	//defer pm.fetcher.Stop()
  	defer pm.downloader.Terminate()
  
  	// Wait for different events to fire synchronisation operations
  	//forceSync := time.Tick(forceSyncCycle)
  	for {
  		select {
  		case <-pm.newPeerCh:
  			/*			// Make sure we have peers to select from, then sync
  						if pm.peers.Len() < minDesiredPeerCount {
  							break
  						}
  						go pm.synchronise(pm.peers.BestPeer())
  			*/
  		/*case <-forceSync:
  		// Force a sync even if not enough peers are present
  		go pm.synchronise(pm.peers.BestPeer())
  		*/
  		case <-pm.noMorePeers:
  			return
  		}
  	}
  }
docs: // syncer is responsible for periodically synchronising with the network, both
  // downloading hashes and blocks as well as handling the announcement handler.