package backoff import ( "context" "time" "github.com/lestrrat-go/option" ) type Option = option.Interface type Controller interface { Done() <-chan struct{} Next() <-chan struct{} } type IntervalGenerator interface { Next() time.Duration } // Policy is an interface for the backoff policies that this package // implements. Users must create a controller object from this // policy to actually do anything with it type Policy interface { Start(context.Context) Controller } type Random interface { Float64() float64 }