diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index 75567170f0..3865e66dc2 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -153,7 +153,6 @@ export function set(source, value) { !untracking && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT)) !== 0 && - (active_reaction.f & (ASYNC_DERIVED)) === 0 && // If the source was created locally within the current derived, then // we allow the mutation. (derived_sources === null || !derived_sources.includes(source)) diff --git a/packages/svelte/tests/runtime-runes/samples/async-key/_config.js b/packages/svelte/tests/runtime-runes/samples/async-key/_config.js index 293ac9357a..ddf970ef0e 100644 --- a/packages/svelte/tests/runtime-runes/samples/async-key/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/async-key/_config.js @@ -37,6 +37,8 @@ export default test({ assert.equal(target.querySelector('h1'), h1); d = deferred(); + // TODO context leaks without this? + await Promise.resolve(); component.promise = d.promise; await tick(); assert.htmlEqual(target.innerHTML, '