code: func (p *Peer) Disconnect() {
  	if atomic.AddInt32(&p.disconnect, 1) != 1 {
  		return
  	}
  
  	log.Tracef("Disconnecting %s", p)
  	if atomic.LoadInt32(&p.connected) != 0 {
  		p.conn.Close()
  	}
  	close(p.quit)
  }
docs: // Disconnect disconnects the peer by closing the connection.  Calling this
  // function when the peer is already disconnected or in the process of
  // disconnecting will have no effect.