skip TearDown if already ran at exit (e.g. if it threw an exception itself)