From: Dmitry Volyntsev Date: Wed, 24 Jan 2024 00:33:29 +0000 (-0800) Subject: Shell: fixed unhandled rejected promises handling. X-Git-Tag: 0.8.3~11 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=9edee0bcddad996068c7b1a7a63f35afb831ae64;p=njs.git Shell: fixed unhandled rejected promises handling. The issue was introduced in dffdf7c50dfc (not released yet). --- 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