Interesting. I expected this to raise a LocalJumpError, which is the normal case when using return within a block. But I've tried it in several version of MRI and it works. So I've learned a new trick with Mutex.