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();
   }