in pkg/utils/utils.go [65:83]
func RetryWithBackoffCtx(ctx context.Context, backoff Backoff, fn func() error) error {
var err error
for {
select {
case <-ctx.Done():
return ctx.Err()
default:
}
err = fn()
retriableErr, isRetriableErr := err.(Retriable)
if err == nil || (isRetriableErr && !retriableErr.Retry()) {
return err
}
time.Sleep(backoff.Duration())
}
return err
}