From 9edee0bcddad996068c7b1a7a63f35afb831ae64 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Tue, 23 Jan 2024 16:33:29 -0800 Subject: [PATCH] Shell: fixed unhandled rejected promises handling. The issue was introduced in dffdf7c50dfc (not released yet). --- external/njs_shell.c | 10 +++++----- test/js/promise_reject_post_catch.t.js | 9 --------- test/shell_test.exp | 9 +++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 test/js/promise_reject_post_catch.t.js diff --git a/external/njs_shell.c b/external/njs_shell.c index 98d3caff..805615c9 100644 --- a/external/njs_shell.c +++ b/external/njs_shell.c @@ -1207,6 +1207,11 @@ njs_process_script(njs_vm_t *vm, void *runtime, const njs_str_t *script) } } + ret = njs_process_events(runtime); + if (njs_slow_path(ret == NJS_ERROR)) { + break; + } + if (njs_unhandled_rejection(runtime)) { njs_process_output(vm, NULL, NJS_ERROR); @@ -1215,11 +1220,6 @@ njs_process_script(njs_vm_t *vm, void *runtime, const njs_str_t *script) } } - ret = njs_process_events(runtime); - if (njs_slow_path(ret == NJS_ERROR)) { - break; - } - if (ret == NJS_OK) { break; } diff --git a/test/js/promise_reject_post_catch.t.js b/test/js/promise_reject_post_catch.t.js deleted file mode 100644 index 0061cbcf..00000000 --- a/test/js/promise_reject_post_catch.t.js +++ /dev/null @@ -1,9 +0,0 @@ -/*--- -includes: [] -flags: [] -negative: - phase: runtime ----*/ - -var p = Promise.reject(); -setImmediate(() => {p.catch(() => {})}); diff --git a/test/shell_test.exp b/test/shell_test.exp index a8c17dd2..336c3d3f 100644 --- a/test/shell_test.exp +++ b/test/shell_test.exp @@ -476,6 +476,15 @@ ReferenceError: \"ref\" is not defined at anonymous \\\(string:1\\\) at main \\\(string:1\\\)\n$" +njs_test { + {"setImmediate(() => { console.log('x'); return Promise.reject('xx'); })\r\n" + "0\r\nx\r\nThrown:\r\nError: unhandled promise rejection: xx\r\n"} + {"setImmediate(() => { console.log('x'); return Promise.reject('xx'); })\r\n" + "1\r\nx\r\nThrown:\r\nError: unhandled promise rejection: xx\r\n"} + {"42\r\n" + "42\r\n"} +} + # CLI OPTIONS # help -- 2.47.3