Meet npm Pro: unlimited public & private packages + package-based permissions.Learn more »

bimodal

0.0.1 • Public • Published

bimodal

bimodal is an experiment in replacing try/catch boilerplate with an [err, result] array, inspired by error return values in Go.

Installation

# npm 
npm i --save bimodal
 
# yarn 
yarn add bimodal

Usage

const bimodal = require('bimodal')
 
const [err, result] = await bimodal (fnThatMayThrowError, arg1, arg2, ...)

Rationale

This is annoying:

let result
 
try {
  result = await fnThatMayThrowError()
}
catch (err) {
  // ...
}
 
// use result

This is nicer:

let [err, result] = await bimodal (fnThatMayThrowError)
 
if (err) {
  // ...
}
 
// use result

What's it doing?

Not much:

module.exports = async (fn, ...args) => {
  const channels = [undefined, undefined]
 
  try {
    channels[1] = await fn.apply(null, args)
  }
  catch (err) {
    channels[0] = err
  }
  finally {
    return channels
  }
}

Install

npm i bimodal

DownloadsWeekly Downloads

1

Version

0.0.1

License

MIT

Unpacked Size

2.88 kB

Total Files

4

Last publish

Collaborators

  • avatar