code: func (t *dialTask) resolve(srv *Server) bool {
  	if srv.ntab == nil {
  		log.Debug("Can't resolve node", "id", t.dest.ID, "err", "discovery is disabled")
  		return false
  	}
  	if t.resolveDelay == 0 {
  		t.resolveDelay = initialResolveDelay
  	}
  	if time.Since(t.lastResolved) < t.resolveDelay {
  		return false
  	}
  	resolved := srv.ntab.Resolve(t.dest)
  	t.lastResolved = time.Now()
  	if resolved == nil {
  		t.resolveDelay *= 2
  		if t.resolveDelay > maxResolveDelay {
  			t.resolveDelay = maxResolveDelay
  		}
  		log.Debug("Resolving node failed", "id", t.dest.ID, "newdelay", t.resolveDelay)
  		return false
  	}
  	// The node was found.
  	t.resolveDelay = initialResolveDelay
  	t.dest = resolved
  	log.Debug("Resolved node", "id", t.dest.ID, "addr", &net.TCPAddr{IP: t.dest.IP(), Port: t.dest.TCP()})
  	return true
  }
docs: // resolve attempts to find the current endpoint for the destination
  // using discovery.
  //
  // Resolve operations are throttled with backoff to avoid flooding the
  // discovery network with useless queries for nodes that don't exist.
  // The backoff delay resets when the node is found.