code: func NewRetryWaiter(minFailures int, minWait, maxWait time.Duration, jitter Jitter) *RetryWaiter {
  	if minFailures < 0 {
  		minFailures = defaultMinFailures
  	}
  
  	if maxWait <= 0 {
  		maxWait = defaultMaxWait
  	}
  
  	if minWait <= 0 {
  		minWait = 0 * time.Nanosecond
  	}
  
  	return &RetryWaiter{
  		minFailures: uint(minFailures),
  		minWait:     minWait,
  		maxWait:     maxWait,
  		failures:    0,
  		jitter:      jitter,
  	}
  }
docs: // Creates a new RetryWaiter