code: func fetchDiscoveryDoc(c context.Context, url string) (*discoveryDoc, error) {
  	if url == "" {
  		return nil, ErrNotConfigured
  	}
  
  	fetcher := func() (interface{}, time.Duration, error) {
  		doc := &discoveryDoc{}
  		req := internal.Request{
  			Method: "GET",
  			URL:    url,
  			Out:    doc,
  		}
  		if err := req.Do(c); err != nil {
  			return nil, 0, err
  		}
  		return doc, time.Hour * 24, nil
  	}
  
  	// Cache the document in the process cache.
  	cached, err := discoveryDocCache.LRU(c).GetOrCreate(c, url, fetcher)
  	if err != nil {
  		return nil, err
  	}
  	return cached.(*discoveryDoc), nil
  }
docs: // fetchDiscoveryDoc fetches discovery document from given URL. It is cached in
  // the process cache for 24 hours.