summaryrefslogtreecommitdiff
path: root/runtime/js/40_signals.js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js/40_signals.js')
-rw-r--r--runtime/js/40_signals.js21
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;
}