0.0.1 • Published 6 years ago
bimodal v0.0.1
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 bimodalUsage
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 resultThis is nicer:
let [err, result] = await bimodal (fnThatMayThrowError)
if (err) {
// ...
}
// use resultWhat'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
}
}0.0.1
6 years ago