code: func JitterUntil(f func(), period time.Duration, jitterFactor float64, stopCh <-chan struct{}) {
  	select {
  	case <-stopCh:
  		return
  	default:
  	}
  
  	for {
  		func() {
  			defer runtime.HandleCrash()
  			f()
  		}()
  
  		jitteredPeriod := period
  		if jitterFactor > 0.0 {
  			jitteredPeriod = Jitter(period, jitterFactor)
  		}
  
  		select {
  		case <-stopCh:
  			return
  		case <-time.After(jitteredPeriod):
  		}
  	}
  }
docs: // JitterUntil loops until stop channel is closed, running f every period.
  // If jitterFactor is positive, the period is jittered before every run of f.
  // If jitterFactor is not positive, the period is unchanged.
  // Catches any panics, and keeps going. f may not be invoked if
  // stop channel is already closed. Pass NeverStop to Until if you
  // don't want it stop.