I am of the opinion that "don't use exceptions for control flow" is one of those things that everybody repeats without really thinking about it. Exceptions *are* control flow, and I definitely prefer them to manually checking return values or globals.

Yeah, you shouldn't use them to pass control around, but that's not what's happening here. (Though this should definitely be more specific and rescue `ErrorDuringExecution`).