code: func (t *Transport) RemovePeer(id uint64) error {
  	t.mu.Lock()
  	defer t.mu.Unlock()
  
  	if t.stopped {
  		return errors.New("transport stopped")
  	}
  	p, ok := t.peers[id]
  	if !ok {
  		return ErrIsNotFound
  	}
  	delete(t.peers, id)
  	cc := p.conn()
  	p.stop()
  	timer := time.AfterFunc(8*time.Second, func() {
  		t.mu.Lock()
  		if !t.stopped {
  			delete(t.deferredConns, cc)
  			cc.Close()
  		}
  		t.mu.Unlock()
  	})
  	// store connection and timer for cleaning up on stop
  	t.deferredConns[cc] = timer
  
  	return nil
  }
docs: // RemovePeer removes peer from Transport and wait for it to stop.