code: func (c *Cache) refresh(opts *RegisterOptions, attempt uint, t string, key string, r Request) {
  	// Sanity-check, we should not schedule anything that has refresh disabled
  	if !opts.Refresh {
  		return
  	}
  	// Check if cache was stopped
  	if atomic.LoadUint32(&c.stopped) == 1 {
  		return
  	}
  
  	// If we're over the attempt minimum, start an exponential backoff.
  	if wait := backOffWait(attempt); wait > 0 {
  		time.Sleep(wait)
  	}
  
  	// If we have a timer, wait for it
  	if opts.RefreshTimer > 0 {
  		time.Sleep(opts.RefreshTimer)
  	}
  
  	// Trigger. The "allowNew" field is false because in the time we were
  	// waiting to refresh we may have expired and got evicted. If that
  	// happened, we don't want to create a new entry.
  	c.fetch(t, key, r, false, attempt)
  }
docs: // refresh triggers a fetch for a specific Request according to the
  // registration options.