From 90ee19c3422240f78c3af2b25939c1a1605675d9 Mon Sep 17 00:00:00 2001 From: Dmitry Vasilev Date: Sun, 25 Dec 2022 18:20:47 +0800 Subject: [PATCH] do not save promise status when promise returned from fn, only on then and await --- src/eval.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/eval.js b/src/eval.js index 3c72665..94d3585 100644 --- a/src/eval.js +++ b/src/eval.js @@ -395,24 +395,6 @@ export const eval_modules = ( } } - const set_promise_status = value => { - if(value instanceof Promise) { - // record stack for async calls, so expand calls works sync - set_record_call() - // TODO why we set status for wrapped value and not for wrapper? - return value - .then(v => { - value.status = {ok: true, value: v} - return v - }) - .catch(e => { - value.status = {ok: false, error: e} - throw e - }) - } else { - return value - } - } const __do_await = async value => { // children is an array of child calls for current function call. But it @@ -473,7 +455,10 @@ export const eval_modules = ( try { value = fn(...args) ok = true - return set_promise_status(value) + if(value instanceof Promise) { + set_record_call() + } + return value } catch(_error) { ok = false error = _error @@ -573,7 +558,10 @@ export const eval_modules = ( value = undefined } ok = true - return set_promise_status(value) + if(value instanceof Promise) { + set_record_call() + } + return value } catch(_error) { ok = false error = _error