diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 375a0091209161..4b4ab4b162e46d 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -1319,7 +1319,9 @@ function getStackString(ctx, error) { if (typeof error.stack === 'string') { return error.stack; } - return formatValue(ctx, error.stack); + if (error.stack !== error) { + return formatValue(ctx, error.stack); + } } return ErrorPrototypeToString(error); } diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index 2dc263443481a0..d28f97eda2eb89 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -3460,3 +3460,22 @@ ${error.stack.split('\n').slice(1).join('\n')}`, '[[\n Symbol(foo)\n]]' ); } + +{ + const prepareStackTrace = Error.prepareStackTrace; + + Error.prepareStackTrace = (error) => error; + + const error = new Error('foo'); + + assert.strictEqual(inspect(error), '[Error: foo]'); + + Error.prepareStackTrace = prepareStackTrace; +} + +{ + const error = new Error('foo'); + error.stack = error; + + assert.strictEqual(inspect(error), '[Error: foo]'); +}