diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index cc3df8b8a36809..67f63ca78537b4 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -511,26 +511,17 @@ class Test extends AsyncResource { async runHook(hook, args) { validateOneOf(hook, 'hook name', kHookNames); - let failedHook; try { await ArrayPrototypeReduce(this.hooks[hook], async (prev, hook) => { await prev; await hook.run(args); if (hook.error) { - failedHook = hook; throw hook.error; } }, PromiseResolve()); } catch (err) { const error = new ERR_TEST_FAILURE(`failed running ${hook} hook`, kHookFailure); error.cause = isTestFailureError(err) ? err.cause : err; - if (failedHook && !failedHook.outerSignal?.aborted) { - failedHook.passed = false; - failedHook.error = null; - failedHook.abortController.abort(); - failedHook.abortController = new AbortController(); - failedHook.signal = this.abortController.signal; - } throw error; } } @@ -771,6 +762,14 @@ class TestHook extends Test { super({ __proto__: null, fn, timeout, signal }); } run(args) { + if (this.error && !this.outerSignal?.aborted) { + this.passed = false; + this.error = null; + this.abortController.abort(); + this.abortController = new AbortController(); + this.signal = this.abortController.signal; + } + this.#args = args; return super.run(); }