code: func (p *Peer) Disconnect(reason DiscReason) {
  	select {
  	case p.disc <- reason:
  	case <-p.closed:
  	}
  }
docs: // Disconnect terminates the peer connection with the given reason.
  // It returns immediately and does not wait until the connection is closed.