Evaluate a block that creates a future up to a specific number of times, if the future fails, decide if to retry using the shouldRetry predicate, if it returns true - retry else return the failed future.
Evaluate a block that creates a future up to a specific number of times, if the future fails, decide if to retry using the shouldRetry predicate, if it returns true - retry else return the failed future.
Default is to retry for all throwables.
Any exception in the block creating the future will never be retried but always be returned as a failed future
Evaluate a block that creates a future up to a specific number of times, if the future fails, decide about retrying using a predicate, if it should retry an exponential back off is applied so that the retry waits longer and longer for every retry it makes.
Evaluate a block that creates a future up to a specific number of times, if the future fails, decide about retrying using a predicate, if it should retry an exponential back off is applied so that the retry waits longer and longer for every retry it makes. A jitter is also added so that the exact timing of the retry isn't exactly the same for all calls with the same backOffUnit
Any exception in the block creating the future will also be returned as a failed future Default is to retry for all throwables.
Based on this wikipedia article: http://en.wikipedia.org/wiki/Truncated_binary_exponential_backoff