oathbreaker

0.0.1 • Public • Published

oathbreaker

js-standard-style

Cancel pending promises with ease!

Install

npm i oathbreaker

Usage

Oath()

Create an Oath and break it:

const Oath = require('oathbreaker')

const oath = Oath((resolve, reject) => {
  const t = setTimeout(() => resolve('ok'), 5e3)

  return () => clearTimeout(t)
})

setTimeout(() => oath.break(), 3e3)

The callback return value should be falsy or a function. If a function's returned, it's called if/when the oath is broken.

The callback takes an optional 3rd argument. This is an AbortSignal, which can be passed to other methods (e.g. https.request()) or checked in business logic to see whether the oath was broken:

const https = require('https')
const Oath = require('oathbreaker')

const oath1 = Oath((resolve, reject, signal) => {
  https.get('<url>', { signal }, res => {
    // handle response
  }).once('error', reject)
})

const oath2 = Oath((resolve, reject, signal) => {
  // do some stuff

  if (signal.aborted) return

  // do some other stuff
})

Oath.all()

Similar to Promise.all() except it breaks other oaths (i.e. cancels pending promises) when 1 rejects:

Oath.all([oath1, oath2, ... ])
  .then(() => {
    // all promises resolved
  })
  .catch(() => {
    // 1 promise rejected,
    // others pending are canceled
  })

Oath.any()

Similar to Promise.any() except it breaks other oaths when 1 resolves:

Oath.any([oath1, oath2, ... ])
  .then(() => {
    // 1 promise resolved,
    // others pending are canceled
  })
  .catch(() => {
    // All promises rejected
  })

Oath.race()

Similar to Promise.race() except it breaks others oaths when 1 resolves or rejects:

Oath.race([oath1, oath2, ... ])
  .then(() => {
    // 1 promise resolved,
    // others pending are canceled
  })
  .catch(() => {
    // 1 promise rejected,
    // others pending are canceled
  })

Test

npm test

Lint

npm run lint or npm run lint:fix

License

Licensed under MIT.

Package Sidebar

Install

npm i oathbreaker

Weekly Downloads

0

Version

0.0.1

License

MIT

Unpacked Size

11.1 kB

Total Files

7

Last publish

Collaborators

  • zbo14