code: func (i *impl) backoffPeriod() time.Duration {
  	backoff, max := float64(i.opts.InitialBackoff), float64(i.opts.MaxBackoff)
  	for j := 0; j < i.retries && backoff < max; j++ {
  		backoff *= i.opts.BackoffFactor
  	}
  	if backoff > max {
  		backoff = max
  	}
  
  	return time.Duration(backoff)
  }
docs: // backoffPeriod calculates the backoff duration based on the provided opts