Could we do this with a flag on IO instead of rescuing an exception? Causing exceptions in the normal flow is very bad for performance.