diff options
Diffstat (limited to 'runtime/js/40_signals.js')
-rw-r--r-- | runtime/js/40_signals.js | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/runtime/js/40_signals.js b/runtime/js/40_signals.js index bf6be1263..67c1da313 100644 --- a/runtime/js/40_signals.js +++ b/runtime/js/40_signals.js @@ -5,6 +5,14 @@ const core = window.Deno.core; const { build } = window.__bootstrap.build; const { errors } = window.__bootstrap.errors; + const { + Error, + ObjectAssign, + Promise, + PromisePrototypeThen, + PromiseResolve, + SymbolAsyncIterator, + } = window.__bootstrap.primordials; function bindSignal(signo) { return core.opSync("op_signal_bind", signo); @@ -154,9 +162,9 @@ function setSignals() { if (build.os === "darwin") { - Object.assign(Signal, MacOSSignal); + ObjectAssign(Signal, MacOSSignal); } else { - Object.assign(Signal, LinuxSignal); + ObjectAssign(Signal, LinuxSignal); } } @@ -205,7 +213,7 @@ class SignalStream { #disposed = false; - #pollingPromise = Promise.resolve(false); + #pollingPromise = PromiseResolve(false); #rid = 0; constructor(signo) { @@ -236,7 +244,7 @@ f, g, ) { - return this.#pollingPromise.then((done) => { + const p = PromisePrototypeThen(this.#pollingPromise, (done) => { if (done) { // If pollingPromise returns true, then // this signal stream is finished and the promise API @@ -244,14 +252,15 @@ return new Promise(() => {}); } return; - }).then(f, g); + }); + return PromisePrototypeThen(p, f, g); } async next() { return { done: await this.#pollingPromise, value: undefined }; } - [Symbol.asyncIterator]() { + [SymbolAsyncIterator]() { return this; } |