I'd prefer this as well, the problem is you need to do the following in order:

1. increment the counter
2. check if retries are exhausted. If so, raise from the calling code; the Retry object doesn't and shouldn't contain the state to raise the proper error.
3. Sleep, only if we haven't raised an exception.

I suppose increment could also check exhaustion, and raise? I believe there is at least one place in urlopen where increment is not immediately followed by a raise or a sleep.