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