Skip to content

Commit c430a15

Browse files
committed
fixup! lib: aggregate errors to avoid error swallowing
1 parent 34bafbf commit c430a15

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

lib/internal/errors.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,12 @@ const aggregateTwoErrors = hideStackFrames((innerError, outerError) => {
146146
return outerError;
147147
}
148148
// eslint-disable-next-line no-restricted-syntax
149-
return new AggregateError(new SafeArrayIterator([
149+
const err = new AggregateError(new SafeArrayIterator([
150150
outerError,
151151
innerError,
152152
]), outerError.message);
153+
err.code = outerError.code;
154+
return err;
153155
}
154156
return innerError || outerError;
155157
});

test/parallel/test-error-aggregateTwoErrors.js

+13
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ assert.strictEqual(aggregateTwoErrors(null, null), null);
2121
const err0 = new Error('original');
2222
const err1 = new Error('second error');
2323

24+
err0.code = 'ERR0';
25+
err1.code = 'ERR1';
26+
2427
const chainedError = aggregateTwoErrors(err1, err0);
2528
assert.strictEqual(chainedError.message, err0.message);
29+
assert.strictEqual(chainedError.code, err0.code);
2630
assert.deepStrictEqual(chainedError.errors, [err0, err1]);
2731
}
2832

@@ -31,16 +35,25 @@ assert.strictEqual(aggregateTwoErrors(null, null), null);
3135
const err1 = new Error('second error');
3236
const err2 = new Error('third error');
3337

38+
err0.code = 'ERR0';
39+
err1.code = 'ERR1';
40+
err2.code = 'ERR2';
41+
3442
const chainedError = aggregateTwoErrors(err2, aggregateTwoErrors(err1, err0));
3543
assert.strictEqual(chainedError.message, err0.message);
44+
assert.strictEqual(chainedError.code, err0.code);
3645
assert.deepStrictEqual(chainedError.errors, [err0, err1, err2]);
3746
}
3847

3948
{
4049
const err0 = new Error('original');
4150
const err1 = new Error('second error');
4251

52+
err0.code = 'ERR0';
53+
err1.code = 'ERR1';
54+
4355
const chainedError = aggregateTwoErrors(null, aggregateTwoErrors(err1, err0));
4456
assert.strictEqual(chainedError.message, err0.message);
57+
assert.strictEqual(chainedError.code, err0.code);
4558
assert.deepStrictEqual(chainedError.errors, [err0, err1]);
4659
}

0 commit comments

Comments
 (0)