code: func (p *Peer) handlePongMsg(msg *wire.MsgPong) {
  	// Arguably we could use a buffered channel here sending data
  	// in a fifo manner whenever we send a ping, or a list keeping track of
  	// the times of each ping. For now we just make a best effort and
  	// only record stats if it was for the last ping sent. Any preceding
  	// and overlapping pings will be ignored. It is unlikely to occur
  	// without large usage of the ping rpc call since we ping infrequently
  	// enough that if they overlap we would have timed out the peer.
  	if p.ProtocolVersion() > wire.BIP0031Version {
  		p.statsMtx.Lock()
  		if p.lastPingNonce != 0 && msg.Nonce == p.lastPingNonce {
  			p.lastPingMicros = time.Since(p.lastPingTime).Nanoseconds()
  			p.lastPingMicros /= 1000 // convert to usec.
  			p.lastPingNonce = 0
  		}
  		p.statsMtx.Unlock()
  	}
  }
docs: // handlePongMsg is invoked when a peer receives a pong bitcoin message.  It
  // updates the ping statistics as required for recent clients (protocol
  // version > BIP0031Version).  There is no effect for older clients or when a
  // ping was not previously sent.