From a48ba8a8a9bfcd62e4309222dcc2f217200a1f34 Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sat, 30 Mar 2019 10:59:39 -0700 Subject: [PATCH] Remove getter existence check from assignCommonNamespaceHandlerTraps() error guard. [closes #773] --- src/entry.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/entry.js b/src/entry.js index 40ee69cca..4d955be45 100644 --- a/src/entry.js +++ b/src/entry.js @@ -708,10 +708,16 @@ function assignCommonNamespaceHandlerTraps(handler, entry, proxy) { const getter = getters[name] const hasGetter = getter !== void 0 - const errored = - ! hasGetter || - entry._namespaceFinalized !== NAMESPACE_FINALIZATION_COMPLETED || - getter() === ERROR_GETTER + let getterValue + let errored = entry._namespaceFinalized !== NAMESPACE_FINALIZATION_COMPLETED + let getterCalled = false + + if (! errored && + hasGetter) { + getterCalled = true + getterValue = getter() + errored = getterValue === ERROR_GETTER + } if (errored && typeof name === "string" && @@ -728,7 +734,9 @@ function assignCommonNamespaceHandlerTraps(handler, entry, proxy) { } if (hasGetter) { - return getter() + return getterCalled + ? getterValue + : getter() } if (receiver === proxy) {