code: func (pool *serverPool) disconnect(entry *poolEntry) {
  	stopped := false
  	select {
  	case <-pool.quit:
  		stopped = true
  	default:
  	}
  	log.Debug("Disconnected old entry", "enode", entry.node.ID())
  	req := &disconnReq{entry: entry, stopped: stopped, done: make(chan struct{})}
  
  	// Block until disconnection request is served.
  	pool.disconnCh <- req
  	<-req.done
  }
docs: // disconnect should be called when ending a connection. Service quality statistics
  // can be updated optionally (not updated if no registration happened, in this case
  // only connection statistics are updated, just like in case of timeout)