Refactoring to use custom @FunctionalInterfaces that allow checked exceptions
Support for CompletableFuture returned from user task, no longer using TooManyRetriesException, preering original exception
A little bit less duplication by passing startTime
One extra test for asynchronous code throwing immediately rather than returning CompletableFuture
NeverRetryPolicy is not necessary with MaxRetriesPolicy in hand
Off-by-one errors in logging statements
retryFor -> retryOn, abortFor -> abortOn