Awesome
p-catch-if
Conditional promise catch handler
Useful for handling only some types of errors and let the rest pass through.
Install
$ npm install p-catch-if
Usage
import pCatchIf from 'p-catch-if';
// Error constructor
getData().catch(pCatchIf(TimeoutError, () => retry(getData)));
// Multiple error constructors
getData().catch(pCatchIf([NetworkError, TimeoutError], () => retry(getData)));
// Boolean
getData().catch(pCatchIf(isProduction, error => recordError(error)));
// Function
const hasUnicornMessage = error => error.message.includes('unicorn');
getData().catch(pCatchIf(hasUnicornMessage, console.error));
// Promise-returning function
const handler = error => sendError(error).then(checkResults);
getData().catch(pCatchIf(handler, console.error));
// Can also be nested
const validateMessage = error => error.message === 'Too many rainbows';
getData().catch(pCatchIf(UnicornError, pCatchIf(validateMessage, console.error)));
API
pCatchIf(predicate, catchHandler)
Returns a thunk that returns a Promise
.
predicate
Type: Error.constructor
Error.constructor[]
boolean
Function -> Promise<boolean>|boolean
Specify either an error constructor, array of error constructors, boolean, or function that returns a promise for a boolean or a boolean.
If the function returns a promise, it's awaited.
catchHandler
Type: Function
Called if predicate
passes.
This is what you would normally pass to .catch()
.