From 900004182346fc4c62690ecf01519f7847d99fa4 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Tue, 27 Jul 2021 23:22:07 -0700 Subject: [PATCH] Fixed bug in promise where the promise returned by promise.this() didn't resolve correctly if it resolved after this() returned --- microscript/ILibDuktape_Polyfills.c | 4 ++-- modules/promise.js | 26 ++++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 68865a0..3275726 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2327,8 +2327,8 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('clipboard', Buffer.from('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', 'base64'));"); // Promise: This is very important, as it is used everywhere. Refer to /modules/promise.js to see a human readable version of promise.js - duk_peval_string_noresult(ctx, "addCompressedModule('promise', Buffer.from('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', 'base64'));"); - + duk_peval_string_noresult(ctx, "addCompressedModule('promise', Buffer.from('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', 'base64'), '2021-07-27T23:14:29.000-07:00');"); + // util-agentlog, used to parse agent error logs. Refer to modules/util-agentlog.js duk_peval_string_noresult(ctx, "addCompressedModule('util-agentlog', Buffer.from('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', 'base64'));"); diff --git a/modules/promise.js b/modules/promise.js index b00fc92..b7d63db 100644 --- a/modules/promise.js +++ b/modules/promise.js @@ -199,7 +199,29 @@ function Promise(promiseFunc) this.emit.apply(this, args); this.emit('settled'); }; - + this._internal.resolveInspector = function resolveInspector() + { + var v = this.emit_returnValue('resolved'); + if(v!=null && v._ObjectID == 'promise') + { + // then() returned a promise, so we need to resolve/reject it + v._internal.once('resolved', this.promise.__childPromise._internal.resolver.bind(this.promise.__childPromise._internal)); + v._internal.once('rejected', this.promise.__childPromise._internal.rejector.bind(this.promise.__childPromise._internal)); + } + else + { + if (v != null) + { + // then() returned a non-promise object, so we need to resolve the promise with it + this.promise.__childPromise._res(v); + } + else + { + // then() didn't return anything, so we just propagate the values from the underlying promise + this.once('resolved', this.promise.__childPromise._internal.resolver.bind(this.promise.__childPromise._internal)); + } + } + }; this.catch = function(func) { var rt = getRootPromise(this); @@ -257,7 +279,7 @@ function Promise(promiseFunc) } else { - this._internal.once('resolved', retVal._internal.resolver.bind(retVal._internal).internal); + this._internal.once('resolved', this._internal.resolveInspector); this._internal.once('rejected', retVal._internal.rejector.bind(retVal._internal).internal); }