p-catch-if
TypeScript icon, indicating that this package has built-in type declarations

3.0.0 • Public • Published

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().

Related

  • p-if - Conditional promise chains
  • p-tap - Tap into a promise chain without affecting its value or state
  • p-log - Log the value/error of a promise
  • More…

Package Sidebar

Install

npm i p-catch-if

Weekly Downloads

250

Version

3.0.0

License

MIT

Unpacked Size

6.23 kB

Total Files

5

Last publish

Collaborators

  • sindresorhus