diff --git a/packages/shell-server/shell-server.js b/packages/shell-server/shell-server.js index 73b62eb214..933baedda7 100644 --- a/packages/shell-server/shell-server.js +++ b/packages/shell-server/shell-server.js @@ -249,7 +249,25 @@ class Server { } evalCommandPromise - .then(() => defaultEval(code, context, file, callback)) + .then(() => defaultEval(code, context, file, (error, result) => { + if (error) { + callback(error); + } else { + // Check if the result is a Promise + if (result && typeof result.then === 'function') { + // Handle the Promise resolution and rejection + result + .then(resolvedResult => { + callback(null, resolvedResult); + }) + .catch(rejectedError => { + callback(rejectedError); + }); + } else { + callback(null, result); + } + } + })) .catch(callback); } diff --git a/tools/tests/apps/shell/server/main.js b/tools/tests/apps/shell/server/main.js index 8a58877acf..f1bff18875 100644 --- a/tools/tests/apps/shell/server/main.js +++ b/tools/tests/apps/shell/server/main.js @@ -8,7 +8,7 @@ Meteor.startup(() => { // not overriden by the special REPL `_` variable, when a command // is executed on the shell. The method will allow the test to call // back and confirm it's still set. -_ = {_specialUnderscoreTestObject: true }; +global._ = {_specialUnderscoreTestObject: true }; Meteor.methods({ "__meteor__/__self_test__/shell-tests/underscore"() { return typeof _ === "object" && Object.keys(_);