in exponential/exponential.go [317:333]
func (b *Backoff) errHasRetryInterval(err error) time.Duration {
var d time.Duration
for {
e := ErrRetryAfter{}
if errors.As(err, &e) {
newDur := b.until(e.Time)
if newDur > d {
d = newDur
}
err = errors.Unwrap(err)
continue
}
break
}
return d
}