package internal import ( "time" "golang.org/x/exp/rand" ) func RetryBackoff(retry int, minBackoff, maxBackoff time.Duration) time.Duration { if retry < 0 { panic("not reached") } if minBackoff == 0 { return 0 } d := minBackoff << uint(retry) d = minBackoff + time.Duration(rand.Int63n(int64(d))) if d > maxBackoff || d < minBackoff { d = maxBackoff } return d }