From 7e9e97d21e61743b5af6054df46cad4f681dfc46 Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Tue, 18 Mar 2025 09:08:37 +0100 Subject: [PATCH] fix(core): pass errors through nextTick --- packages/qwik/src/core/shared/platform/platform.ts | 8 ++++++-- packages/qwik/src/server/platform.ts | 8 ++++++-- packages/qwik/src/testing/platform.ts | 8 ++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/qwik/src/core/shared/platform/platform.ts b/packages/qwik/src/core/shared/platform/platform.ts index 9e0797d52d4..41ce1271f82 100644 --- a/packages/qwik/src/core/shared/platform/platform.ts +++ b/packages/qwik/src/core/shared/platform/platform.ts @@ -39,9 +39,13 @@ export const createPlatform = (): CorePlatform => { }); }, nextTick: (fn) => { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { setTimeout(() => { - resolve(fn()); + try { + resolve(fn()); + } catch (err) { + reject(err); + } }); }); }, diff --git a/packages/qwik/src/server/platform.ts b/packages/qwik/src/server/platform.ts index 17025f85992..402ae715963 100644 --- a/packages/qwik/src/server/platform.ts +++ b/packages/qwik/src/server/platform.ts @@ -59,11 +59,15 @@ export function createPlatform( return Promise.resolve(); }, nextTick: (fn) => { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { // Do not use process.nextTick, as this will execute at same priority as promises. // We need to execute after promises. setTimeout(() => { - resolve(fn()); + try { + resolve(fn()); + } catch (err) { + reject(err); + } }); }); }, diff --git a/packages/qwik/src/testing/platform.ts b/packages/qwik/src/testing/platform.ts index 37cc36c2a52..2b21d9af070 100644 --- a/packages/qwik/src/testing/platform.ts +++ b/packages/qwik/src/testing/platform.ts @@ -60,11 +60,15 @@ function createPlatform() { return render.promise; }, raf: (fn) => { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { // Do not use process.nextTick, as this will execute at same priority as promises. // We need to execute after promises. setTimeout(() => { - resolve(fn()); + try { + resolve(fn()); + } catch (err) { + reject(err); + } }); }); },