If an exception was raised during teardown it would be caught and stored in teardown_exception.  During cleanup, another exception could be raised while attempting to dump_puppet_log, which would then be stored in dumping_exception.  At that point, dumping_exception is raised and reported but teardown_exception is not raised or reported anywhere.  So the original exception that caused us to enter the cleanup phase is lost.