[close #2] Isolate retry logic from exception logic

Since `enum.next` can raise a StopIteration error, the only 100% way to know if the exception is coming from the block provided or from the enumerable to indicate the end of enumeration is to isolate the retry logic from the exception catching logic.