]> git.kaiwu.me - njs.git/commitdiff
Shell: fixed unhandled rejected promises handling.
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 24 Jan 2024 00:33:29 +0000 (16:33 -0800)
committerDmitry Volyntsev <xeioex@nginx.com>
Wed, 24 Jan 2024 00:33:29 +0000 (16:33 -0800)
The issue was introduced in dffdf7c50dfc (not released yet).

external/njs_shell.c
test/js/promise_reject_post_catch.t.js [deleted file]
test/shell_test.exp

index 98d3cafffaea438c16b831a3860e818ecd0602d5..805615c9c2c6b66438f8156a2efbd1eb354071c6 100644 (file)
@@ -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 (file)
index 0061cbc..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/*---
-includes: []
-flags: []
-negative:
-  phase: runtime
----*/
-
-var p = Promise.reject();
-setImmediate(() => {p.catch(() => {})});
index a8c17dd2b52fc0c129f2d69e56a550c9cf3e168a..336c3d3f994486c748f46aa54484a2595a0fa159 100644 (file)
@@ -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