implements a backoff strategy