code: func WithExponentialBackoff(initialBackoff time.Duration, webhookFn func() error) error {
  	backoff := wait.Backoff{
  		Duration: initialBackoff,
  		Factor:   1.5,
  		Jitter:   0.2,
  		Steps:    5,
  	}
  
  	var err error
  	wait.ExponentialBackoff(backoff, func() (bool, error) {
  		err = webhookFn()
  		// these errors indicate a transient error that should be retried.
  		if net.IsConnectionReset(err) || apierrors.IsInternalError(err) || apierrors.IsTimeout(err) || apierrors.IsTooManyRequests(err) {
  			return false, nil
  		}
  		// if the error sends the Retry-After header, we respect it as an explicit confirmation we should retry.
  		if _, shouldRetry := apierrors.SuggestsClientDelay(err); shouldRetry {
  			return false, nil
  		}
  		if err != nil {
  			return false, err
  		}
  		return true, nil
  	})
  	return err
  }
docs: // WithExponentialBackoff will retry webhookFn() up to 5 times with exponentially increasing backoff when
  // it returns an error for which apierrors.SuggestsClientDelay() or apierrors.IsInternalError() returns true.