Easily ignore specific promise errors
npm i --save ignore-errors
// esm
import ignore from 'ignore-errors'
// commonjs
const ignore = require('ignore-errors').default
Will ignore errors w/ property foo
that equals the given literal value (string, number, anything except a regexp)
import ignore from 'ignore-errors'
const err = new Error('boom')
err.foo = 'foobar'
const val = await Promise.reject(err).catch(ignore('foo', 'foobar'))
// gets here, no error thrown
console.log(val) // undefined
Will ignore errors w/ 'foo' and 'bar' given expected values
import ignore from 'ignore-errors'
const err = new Error('boom')
err.foo = 1
err.bar = 2
const val = await Promise.reject(err).catch(ignore({ foo: 1, bar: 2 }))
// gets here, no error thrown
console.log(val) // undefined
Will ignore errors w/ property foo
that have a value that matches the regexp
import ignore from 'ignore-errors'
let val
const err = new Error('boom')
err.foo = 'foobar'
val = await Promise.reject(err).catch(ignore('foo', /foobar/))
// gets here, no error thrown
console.log(val) // undefined
// regexps work when passed when matching multiple properties too
const err = new Error('boom')
err.foo = 1
err.bar = 2
val = await Promise.reject(err).catch(ignore({ foo: /1/, bar: /2/ }))
// gets here, no error thrown
console.log(val) // undefined
Easily ignore errors with messages
, names
, statuses
, reasons
or codes
import {
ignoreMessage,
ignoreName,
ignoreStatus,
ignoreReason,
ignoreCode,
} from 'ignore-errors'
let err
let val
// ignore errors with specific messages
err = new Error('boom')
val = await Promise.reject(err).catch(ignoreMessage('boom'))
val = await Promise.reject(err).catch(ignoreMessage(/boom/))
// gets here, no error thrown
// ignore errors with specific names
class SpecialError extends Error {
constructor(message) {
super(message)
this.name = this.constructor.name
}
}
err = new SpecialError('boom')
val = await Promise.reject(err).catch(ignoreName('SpecialError'))
val = await Promise.reject(err).catch(ignoreName(/SpecialError/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific statuses
err = new Error('boom')
err.status = 500
val = await Promise.reject(err).catch(ignoreStatus(500))
val = await Promise.reject(err).catch(ignoreStatus(/500/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific reasons
err = new Error('boom')
err.reason = 'BOOM_ERROR'
val = await Promise.reject(err).catch(ignoreReason('BOOM_ERROR'))
val = await Promise.reject(err).catch(ignoreReason(/BOOM_ERROR/))
// gets here, no error thrown
console.log(val) // undefined
// ignore errors with specific codes
err = new Error('boom')
err.code = 10
val = await Promise.reject(err).catch(ignoreCode(10))
val = await Promise.reject(err).catch(ignoreCode(/10/))
// gets here, no error thrown
console.log(val) // undefined
import {
ignoreAny,
ignoreMessage,
ignoreName,
ignoreStatus,
ignoreReason,
ignoreCode,
} from 'ignore-errors'
let err
let val
// ignore errors with specific messages
err = new Error('boom')
val = await Promise.reject(err).catch(
ignoreAny(
ignoreMessage('boom'),
ignoreMessage('bam'),
ignoreMessage('pow')
)
)
// gets here, no error thrown
console.log(val) // undefined
MIT