// Flags: --expose-internals 'use strict'; require('../common'); const assert = require('assert'); const { aggregateTwoErrors } = require('internal/errors'); assert.strictEqual(aggregateTwoErrors(null, null), null); { const err = new Error(); assert.strictEqual(aggregateTwoErrors(null, err), err); } { const err = new Error(); assert.strictEqual(aggregateTwoErrors(err, null), err); } { const err0 = new Error('original'); const err1 = new Error('second error'); err0.code = 'ERR0'; err1.code = 'ERR1'; const chainedError = aggregateTwoErrors(err1, err0); assert.strictEqual(chainedError.message, err0.message); assert.strictEqual(chainedError.code, err0.code); assert.deepStrictEqual(chainedError.errors, [err0, err1]); } { const err0 = new Error('original'); const err1 = new Error('second error'); const err2 = new Error('third error'); err0.code = 'ERR0'; err1.code = 'ERR1'; err2.code = 'ERR2'; const chainedError = aggregateTwoErrors(err2, aggregateTwoErrors(err1, err0)); assert.strictEqual(chainedError.message, err0.message); assert.strictEqual(chainedError.code, err0.code); assert.deepStrictEqual(chainedError.errors, [err0, err1, err2]); } { const err0 = new Error('original'); const err1 = new Error('second error'); err0.code = 'ERR0'; err1.code = 'ERR1'; const chainedError = aggregateTwoErrors(null, aggregateTwoErrors(err1, err0)); assert.strictEqual(chainedError.message, err0.message); assert.strictEqual(chainedError.code, err0.code); assert.deepStrictEqual(chainedError.errors, [err0, err1]); } { const err0 = new Error('original'); const err1 = new Error('second error'); err0.code = 'ERR0'; err1.code = 'ERR1'; const chainedError = aggregateTwoErrors(null, aggregateTwoErrors(err1, err0)); const stack = chainedError.stack.split('\n'); assert.match(stack[1], /^ {4}at Object/); }