diff --git a/lib/console.js b/lib/console.js index 8be06935de4839..8480ccfd468c47 100644 --- a/lib/console.js +++ b/lib/console.js @@ -28,6 +28,8 @@ const kCounts = Symbol('counts'); // Track amount of indentation required via `console.group()`. const kGroupIndent = Symbol('groupIndent'); +let MAX_STACK_MESSAGE; + function Console(stdout, stderr, ignoreErrors = true) { if (!(this instanceof Console)) { return new Console(stdout, stderr, ignoreErrors); @@ -111,9 +113,17 @@ function write(ignoreErrors, stream, string, errorhandler, groupIndent) { stream.write(string, errorhandler); } catch (e) { + if (MAX_STACK_MESSAGE === undefined) { + try { + // eslint-disable-next-line no-unused-vars + function a() { a(); } + } catch (err) { + MAX_STACK_MESSAGE = err.message; + } + } // console is a debugging utility, so it swallowing errors is not desirable // even in edge cases such as low stack space. - if (e.message === 'Maximum call stack size exceeded') + if (e.message === MAX_STACK_MESSAGE && e.name === 'RangeError') throw e; // Sorry, there’s no proper way to pass along the error here. } finally {