code: func LookupSRV(service string, proto string, name string, resolver func(string, string, string) (string, []*net.SRV, error)) (string, []*net.SRV, error) {
  	mu.Lock()
  	defer mu.Unlock()
  
  	var err error
  
  	q := query{service, proto, name}
  
  	cname, addrs := retrieve(q)
  	if addrs == nil {
  		cname, addrs, err = resolver("", "", name)
  	}
  
  	store(q, cname, addrs)
  
  	srvctr.WithLabelValues(identity).Inc()
  
  	return cname, addrs, err
  }
docs: // LookupSRV is a wrapper around net.LookupSRV that does a 5 second cache