From d93c7568abb19c0448e7c5597ea6bda2be001fa3 Mon Sep 17 00:00:00 2001 From: Matheus Castro Date: Thu, 13 Oct 2022 23:06:55 -0300 Subject: [PATCH] Don't apply async-await plugin and don't modify promise functions. --- npm-packages/meteor-babel/options.js | 12 +++++++----- npm-packages/meteor-babel/runtime.js | 24 +++++++++++++----------- packages/promise/server.js | 14 ++++++++------ 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/npm-packages/meteor-babel/options.js b/npm-packages/meteor-babel/options.js index 2d582a3102..dc215572b8 100644 --- a/npm-packages/meteor-babel/options.js +++ b/npm-packages/meteor-babel/options.js @@ -185,11 +185,13 @@ function getDefaultsForNode8(features) { // Ensure that async functions run in a Fiber, while also taking // full advantage of native async/await support in Node 8. - combined.plugins.push([require("./plugins/async-await.js"), { - // Do not transform `await x` to `Promise.await(x)`, since Node - // 8 has native support for await expressions. - useNativeAsyncAwait: false - }]); + if (!process.env.DISABLE_FIBERS) { + combined.plugins.push([require("./plugins/async-await.js"), { + // Do not transform `await x` to `Promise.await(x)`, since Node + // 8 has native support for await expressions. + useNativeAsyncAwait: false + }]); + } // Enable async generator functions proposal. combined.plugins.push(require("@babel/plugin-proposal-async-generator-functions")); diff --git a/npm-packages/meteor-babel/runtime.js b/npm-packages/meteor-babel/runtime.js index 43b5c85c85..c7fe580b3f 100644 --- a/npm-packages/meteor-babel/runtime.js +++ b/npm-packages/meteor-babel/runtime.js @@ -11,19 +11,21 @@ Module.prototype.resolve = function (id) { require("@meteorjs/reify/lib/runtime").enable(Module.prototype); -require("meteor-promise").makeCompatible( - global.Promise = global.Promise || - require("promise/lib/es6-extensions"), - require("fibers") -); +if (!process.env.DISABLE_FIBERS) { + require("meteor-promise").makeCompatible( + global.Promise = global.Promise || + require("promise/lib/es6-extensions"), + require("fibers") + ); // If Promise.asyncApply is defined, use it to wrap calls to // regeneratorRuntime.async so that the entire async function will run in // its own Fiber, not just the code that comes after the first await. -if (typeof Promise.asyncApply === "function") { - var regeneratorRuntime = require("@babel/runtime/regenerator"); - var realAsync = regeneratorRuntime.async; - regeneratorRuntime.async = function (innerFn) { - return Promise.asyncApply(realAsync, regeneratorRuntime, arguments); - }; + if (typeof Promise.asyncApply === "function") { + var regeneratorRuntime = require("@babel/runtime/regenerator"); + var realAsync = regeneratorRuntime.async; + regeneratorRuntime.async = function (innerFn) { + return Promise.asyncApply(realAsync, regeneratorRuntime, arguments); + }; + } } diff --git a/packages/promise/server.js b/packages/promise/server.js index e07faeb52b..2f5f59a3c0 100644 --- a/packages/promise/server.js +++ b/packages/promise/server.js @@ -1,11 +1,13 @@ require("./extensions.js"); -require("meteor-promise").makeCompatible( - Promise, - // Allow every Promise callback to run in a Fiber drawn from a pool of - // reusable Fibers. - require("fibers") -); +if (!process.env.DISABLE_FIBERS) { + require("meteor-promise").makeCompatible( + Promise, + // Allow every Promise callback to run in a Fiber drawn from a pool of + // reusable Fibers. + require("fibers") + ); +} // Reference: https://caniuse.com/#feat=promises require("meteor/modern-browsers").setMinimumBrowserVersions({