diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2018-10-12 11:22:52 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-10-12 14:22:52 -0400 |
commit | 45d3b8955de628db0ef051eeb8e351837b4a3b3e (patch) | |
tree | 252bab755760d86cab48502abdabe6ff0c2b9af2 /libdeno/libdeno_test.js | |
parent | c9f95d51da9f6075b1f28a842dc830ec5fe7a30e (diff) |
Fix promise reject issue (#936)
Diffstat (limited to 'libdeno/libdeno_test.js')
-rw-r--r-- | libdeno/libdeno_test.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libdeno/libdeno_test.js b/libdeno/libdeno_test.js index 1b5137f0a..1aa09a775 100644 --- a/libdeno/libdeno_test.js +++ b/libdeno/libdeno_test.js @@ -133,3 +133,43 @@ global.DataBuf = () => { b[0] = 9; b[1] = 8; }; + +global.PromiseRejectCatchHandling = () => { + let count = 0; + let promiseRef = null; + // When we have an error, libdeno sends something + function assertOrSend(cond) { + if (!cond) { + libdeno.send(new Uint8Array([42])); + } + } + libdeno.setPromiseErrorExaminer(() => { + assertOrSend(count === 2); + }); + libdeno.setPromiseRejectHandler((error, event, promise) => { + count++; + if (event === "RejectWithNoHandler") { + assertOrSend(error instanceof Error); + assertOrSend(error.message === "message"); + assertOrSend(count === 1); + promiseRef = promise; + } else if (event === "HandlerAddedAfterReject") { + assertOrSend(count === 2); + assertOrSend(promiseRef === promise); + } + // Should never reach 3! + assertOrSend(count !== 3); + }); + + async function fn() { + throw new Error("message"); + } + + (async () => { + try { + await fn(); + } catch (e) { + assertOrSend(count === 2); + } + })(); +} |