code: func (b *ExponentialBackoff) Next(ctx context.Context, err error) time.Duration {
  	// Get Limited base delay.
  	delay := b.Limited.Next(ctx, err)
  	if delay == Stop {
  		return Stop
  	}
  
  	// Bound our delay.
  	if b.MaxDelay > 0 && b.MaxDelay < delay {
  		delay = b.MaxDelay
  	} else {
  		// Calculate the next delay exponentially.
  		multiplier := b.Multiplier
  		if multiplier < 1 {
  			multiplier = 2
  		}
  		b.Delay = time.Duration(float64(b.Delay) * multiplier)
  	}
  	return delay
  }
docs: // Next implements Iterator.