func Retry(action Action, strategies ...strategy.Strategy) error {
	var err error
	for attempt := uint(0); (attempt == 0 || err != nil) && shouldAttempt(attempt, strategies...); attempt++ {
		err = action(attempt + 1)
	}
	return err
}
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.
package retry
import "github.com/Rican7/retry/strategy"
type Action func(attempt uint) error