From 0f4da0a64f363b51af9187c4abe49486a91df9cd Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 18 Nov 2016 10:55:14 +0000 Subject: [PATCH] ensure that calling 'then' on a promise that has already completed still works --- src/jswrap_promise.c | 33 ++++++++++++++++++++++++++------- tests/test_promise6.js | 7 +++++++ 2 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 tests/test_promise6.js diff --git a/src/jswrap_promise.c b/src/jswrap_promise.c index 2c7733deb..1b155b1b9 100644 --- a/src/jswrap_promise.c +++ b/src/jswrap_promise.c @@ -34,7 +34,7 @@ This is the built-in class for ES6 Promises void _jswrap_promise_queueresolve(JsVar *promise, JsVar *data); void _jswrap_promise_queuereject(JsVar *promise, JsVar *data); -void _jswrap_promise_add(JsVar *parent, JsVar *callback, const char *name); +void _jswrap_promise_add(JsVar *parent, JsVar *callback, bool resolve); bool _jswrap_promise_is_promise(JsVar *promise) { JsVar *constr = jspGetConstructor(promise); @@ -43,6 +43,7 @@ bool _jswrap_promise_is_promise(JsVar *promise) { return isPromise; } + void _jswrap_promise_resolve_or_reject(JsVar *promise, JsVar *data, JsVar *fn) { JsVar *result = 0; if (jsvIsArray(fn)) { @@ -81,7 +82,7 @@ void _jswrap_promise_resolve_or_reject(JsVar *promise, JsVar *data, JsVar *fn) { JsVar *fn = jsvNewNativeFunction((void (*)(void))_jswrap_promise_queueresolve, JSWAT_VOID|JSWAT_THIS_ARG|(JSWAT_JSVAR<