aboutsummaryrefslogtreecommitdiff
path: root/src/njs_async.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2022-05-31 21:48:46 -0700
committerDmitry Volyntsev <xeioex@nginx.com>2022-05-31 21:48:46 -0700
commitc62a9fb92b102c90a66aa724cb9054183a33a68c (patch)
treed497f766cf46ce9b5a80e90c7a03996a962aaa07 /src/njs_async.c
parent83bb129f10cf54ab5dc5c1c1ac3a071133143714 (diff)
downloadnjs-c62a9fb92b102c90a66aa724cb9054183a33a68c.tar.gz
njs-c62a9fb92b102c90a66aa724cb9054183a33a68c.zip
Fixed catching of the exception thrown from an awaited function.
This closes #500 issue on Github.
Diffstat (limited to 'src/njs_async.c')
-rw-r--r--src/njs_async.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/njs_async.c b/src/njs_async.c
index e018bd8b..380c44b7 100644
--- a/src/njs_async.c
+++ b/src/njs_async.c
@@ -67,9 +67,6 @@ njs_await_fulfilled(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
ctx = vm->top_frame->function->context;
value = njs_arg(args, nargs, 1);
- if (njs_is_error(value)) {
- goto failed;
- }
async_frame = ctx->await;
async = &async_frame->native;
@@ -143,6 +140,7 @@ njs_await_rejected(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
value = njs_arg(args, nargs, 1);
if (ctx->await->native.pc == ctx->pc) {
+ /* No catch block was set before await. */
(void) njs_function_call(vm, njs_function(&ctx->capability->reject),
&njs_value_undefined, value, 1, &vm->retval);
@@ -151,6 +149,8 @@ njs_await_rejected(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
return NJS_ERROR;
}
+ /* ctx->await->native.pc points to a catch block here. */
+
ctx->pc = ctx->await->native.pc;
return njs_await_fulfilled(vm, args, nargs, unused);