From 91458a012d1334407eb9c75a6b0a86c9db202fff Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Fri, 6 Jun 2025 12:17:23 -0400 Subject: [PATCH] WIP --- .../svelte/src/internal/client/error-handling.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/svelte/src/internal/client/error-handling.js b/packages/svelte/src/internal/client/error-handling.js index a13c205166..be99c5efda 100644 --- a/packages/svelte/src/internal/client/error-handling.js +++ b/packages/svelte/src/internal/client/error-handling.js @@ -20,13 +20,18 @@ export function handle_error(error) { adjust_error(error, effect); } - if ((effect.f & EFFECT_RAN) !== 0) { - invoke_error_boundary(error, effect); - } else if ((effect.f & BOUNDARY_EFFECT) !== 0) { - // invoke directly + if ((effect.f & EFFECT_RAN) === 0) { + // if the error occurred while creating this subtree, we let it + // bubble up until it hits a boundary that can handle it + if ((effect.f & BOUNDARY_EFFECT) === 0) { + throw error; + } + + // @ts-expect-error effect.fn(error); } else { - throw error; + // otherwise we bubble up the effect tree ourselves + invoke_error_boundary(error, effect); } }