code: func FetchServiceInfo(c context.Context, url string) (*ServiceInfo, error) {
  	info, err := infoCache.LRU(c).GetOrCreate(c, url, func() (interface{}, time.Duration, error) {
  		info := &ServiceInfo{}
  		req := internal.Request{
  			Method: "GET",
  			URL:    url,
  			Out:    info,
  		}
  		if err := req.Do(c); err != nil {
  			return nil, 0, err
  		}
  		return info, time.Hour, nil
  	})
  	if err != nil {
  		return nil, err
  	}
  	return info.(*ServiceInfo), nil
  }
docs: // FetchServiceInfo fetches information about the service from the given URL.
  //
  // The server is expected to reply with JSON described by ServiceInfo struct
  // (like LUCI services do). Uses process cache to cache the response for 1h.
  //
  // LUCI services serve the service info at /auth/api/v1/server/info.