code: func Retry(action Action, strategies ...strategy.Strategy) error {
  	var err error
  
  	for attempt := uint(0); (0 == attempt || nil != err) && shouldAttempt(attempt, strategies...); attempt++ {
  		err = action(attempt)
  	}
  
  	return err
  }
docs: // Retry takes an action and performs it, repetitively, until successful.
  //
  // Optionally, strategies may be passed that assess whether or not an attempt
  // should be made.