type Interface interface {
Start()
Stop()
SetInitialBackoff(time.Duration)
}
Interface does f in a loop, sleeping for initialBackoff between
each iterations. If it hits an error, it exponentially backs
off to maxBackoff. Backoff will log when it backs off, but
will stop logging when it reaches maxBackoff. It will also
log on first success.