Quoting Erik Veenstra <google / erikveen.dds.nl>: > I got it. I introduced LazyException (see below) as a wrapper > for the original Exception. All methods are (once again) > delegated to the original exception with method_missing, except > for LazyException#exception. Hmm. Interesting. I hadn't considered making DivergenceError delegate to its "parent" exception... I'll have to think about that. Incidentally, there may be some threadsafety issues around the exception's backtrace array. (Imagine two LazyExceptions in different threads getting raised simultaneously for the same parent exception -- how will the backtraces accumulate, exactly? There may not be a problem, but I think it bears investigation...) -mental