mirror of https://github.com/nodejs/node.git
errors: add support for cause in aborterror
Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: https://github.com/nodejs/node/pull/41008 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>pull/40909/head
parent
1086468aa3
commit
36c0ac05e6
|
@ -821,8 +821,11 @@ function hideInternalStackFrames(error) {
|
|||
// to make usage of the error in userland and readable-stream easier.
|
||||
// It is a regular error with `.code` and `.name`.
|
||||
class AbortError extends Error {
|
||||
constructor() {
|
||||
super('The operation was aborted');
|
||||
constructor(message = 'The operation was aborted', options = undefined) {
|
||||
if (options !== undefined && typeof options !== 'object') {
|
||||
throw new codes.ERR_INVALID_ARG_TYPE('options', 'Object', options);
|
||||
}
|
||||
super(message, options);
|
||||
this.code = 'ABORT_ERR';
|
||||
this.name = 'AbortError';
|
||||
}
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
// Flags: --expose-internals
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const {
|
||||
strictEqual,
|
||||
throws,
|
||||
} = require('assert');
|
||||
const { AbortError } = require('internal/errors');
|
||||
|
||||
{
|
||||
const err = new AbortError();
|
||||
strictEqual(err.message, 'The operation was aborted');
|
||||
strictEqual(err.cause, undefined);
|
||||
}
|
||||
|
||||
{
|
||||
const cause = new Error('boom');
|
||||
const err = new AbortError('bang', { cause });
|
||||
strictEqual(err.message, 'bang');
|
||||
strictEqual(err.cause, cause);
|
||||
}
|
||||
|
||||
{
|
||||
throws(() => new AbortError('', false), {
|
||||
code: 'ERR_INVALID_ARG_TYPE'
|
||||
});
|
||||
throws(() => new AbortError('', ''), {
|
||||
code: 'ERR_INVALID_ARG_TYPE'
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue