code: func (d *Peer) HandleMsg(ctx context.Context, msg interface{}) error {
  	switch msg := msg.(type) {
  
  	case *peersMsg:
  		return d.handlePeersMsg(msg)
  
  	case *subPeersMsg:
  		return d.handleSubPeersMsg(msg)
  
  	default:
  		return fmt.Errorf("unknown message type: %T", msg)
  	}
  }
docs: // HandleMsg is the message handler that delegates incoming messages