Skip to content

Commit

Permalink
delay WeakMap until after xs preload
Browse files Browse the repository at this point in the history
xs doesn't support WeakMap in pre-loaded closures
aka "vetted customization code"

originally developed in SwingSet:

From ffe8c0dd41c88d83ead7f8abb3f704f7a23f8614 Mon Sep 17 00:00:00 2001
Date: Mon, 26 Aug 2019 22:50:18 -0500
Subject: eventual-send: delay WeakMap til after xs preload

From 876de729205ceb2e7c07e1689b333606fd92f289 Mon Sep 17 00:00:00 2001
Date: Tue, 27 Aug 2019 23:42:50 -0500
Subject: eventual-send: ensureMaps() needed in resolve() too
  • Loading branch information
dckc committed Sep 3, 2019
1 parent 90925ad commit bd2be3f
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,18 @@ export default function maybeExtendPromise(Promise) {
return Promise;
}

const presenceToHandler = new WeakMap();
const presenceToPromise = new WeakMap();
const promiseToHandler = new WeakMap();
// xs doesn't support WeakMap in pre-loaded closures
// aka "vetted customization code"
let presenceToHandler;
let presenceToPromise;
let promiseToHandler;
function ensureMaps() {
if (!presenceToHandler) {
presenceToHandler = new WeakMap();
presenceToPromise = new WeakMap();
promiseToHandler = new WeakMap();
}
}

// This special handler accepts Promises, and forwards
// handled Promises to their corresponding fulfilledHandler.
Expand Down Expand Up @@ -94,6 +103,7 @@ export default function maybeExtendPromise(Promise) {
Promise,
Object.getOwnPropertyDescriptors({
resolve(value) {
ensureMaps();
// Resolving a Presence returns the pre-registered handled promise.
const handledPromise = presenceToPromise.get(value);
if (handledPromise) {
Expand All @@ -103,6 +113,7 @@ export default function maybeExtendPromise(Promise) {
},

makeHandled(executor, unfulfilledHandler = undefined) {
ensureMaps();
let handledResolve;
let handledReject;
let continueForwarding = () => {};
Expand Down

0 comments on commit bd2be3f

Please sign in to comment.