diff --git a/lib/internal/errors.js b/lib/internal/errors.js index 833246c8a5ff66..ec5b0effe78932 100644 --- a/lib/internal/errors.js +++ b/lib/internal/errors.js @@ -445,25 +445,29 @@ function dnsException(err, syscall, hostname) { return ex; } -let MAX_STACK_MESSAGE; +let maxStack_ErrorName; +let maxStack_ErrorMessage; /** - * Returns true if `err` is a `RangeError` with an engine-specific message. + * Returns true if `err.name` and `err.message` are equal to engine-specific + * values indicating max call stack size has been exceeded. * "Maximum call stack size exceeded" in V8. * * @param {Error} err * @returns {boolean} */ function isStackOverflowError(err) { - if (MAX_STACK_MESSAGE === undefined) { + if (maxStack_ErrorMessage === undefined) { try { function overflowStack() { overflowStack(); } overflowStack(); } catch (err) { - MAX_STACK_MESSAGE = err.message; + maxStack_ErrorMessage = err.message; + maxStack_ErrorName = err.name; } } - return err.name === 'RangeError' && err.message === MAX_STACK_MESSAGE; + return err.name === maxStack_ErrorName && + err.message === maxStack_ErrorMessage; } module.exports = exports = {