Also, a method should not change because the external callers track the concept differently. There is no retry 0, that does not make sense for this method, just like calling this method with -3 doesn't make sense either. The first attempt doesn't have an offset, and the second attempt has the offset for retry #1 

The parameter name in this method should change as well, as `attempts` is causing confusion.