Regarding ability of Thread.current.raise to be deferred,
if it works that way now, I'd vote to keep it this way.
Best not to have a special case for Thread.current.raise
If an application requires the special behavior, that's easily achieved:

class Thread
  alias_method :original_raise, :raise
  def raise  exc
    Kernel.raise exc if self == Thread.current
    original_raise exc
  end
end

However, the converse is *not* easily achieved.
If Thread.current.raise cannot be deferred, the only option would be to 
have another thread waiting to rescue the exception and immediately 
raise it back to the original thread.  Not at all elegant.

-- 
Posted via http://www.ruby-forum.com/.