diff options
Diffstat (limited to 'runtime/js/40_signals.js')
-rw-r--r-- | runtime/js/40_signals.js | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/runtime/js/40_signals.js b/runtime/js/40_signals.js index 94171628f..71ead71c7 100644 --- a/runtime/js/40_signals.js +++ b/runtime/js/40_signals.js @@ -5,7 +5,9 @@ const core = window.Deno.core; const ops = core.ops; const { + SafeSetIterator, Set, + SetPrototypeDelete, SymbolFor, TypeError, } = window.__bootstrap.primordials; @@ -60,7 +62,7 @@ checkSignalListenerType(listener); const sigData = getSignalData(signo); - sigData.listeners.delete(listener); + SetPrototypeDelete(sigData.listeners, listener); if (sigData.listeners.size === 0 && sigData.rid) { unbindSignal(sigData.rid); @@ -73,7 +75,7 @@ if (await pollSignal(sigData.rid)) { return; } - for (const listener of sigData.listeners) { + for (const listener of new SafeSetIterator(sigData.listeners)) { listener(); } } |