The exception from the other thread should *always* be wrapped in an ExecutionException. If there is an unwrapped `InterruptedException` for example, it should have been caused by our thread being interrupted while waiting. Therefore we should always be free to check if the exception is fatal.

If we're ever unwrapping the exception so that one can't tell that it came from the other task rather than this thread, then we should fix it so we don't unwrap.