code: func (t *Transport) UpdatePeerAddr(id uint64, addr string) 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
  	}
  	return p.updateAddr(addr)
  }
docs: // UpdatePeerAddr updates peer with new address, but delays connection creation.
  // New address won't be used until first failure on old address.