rethrow may also have the wrong backtrace (because of the other intervening try/catch)