The somewhat peculiar behavior of Ruby's Thread#raise
When you call
Thread#raise, the exception will be raised at whatever point of execution that thread happens to be at. In my blog post, The somewhat peculiar behavior of Ruby’s Thread#raise, I explore why that does make sense, but why it means you should only ever call
Thread#raise if you have complete control over what code is inside that
Thread and if it expects exception raises to be invoked by the outer context.