go-for-it

1.0.2 • Public • Published

go-for-it

CircleCI

Error handling à la golang.

Read the blog post:

Async Control Flow without Exceptions nor Monads

Installation

npm install go-for-it

Example

const go = require('go-for-it')
 
const toUpper = async string => {
  if (string === 'invalid') throw Error('Invalid input')
  return string.toUpperCase()
}
const errorHandler = () => { console.log('There has been an error. I\'ll handle it.') }
const print = console.log
 
const foo = async input => {
  const [err, value] = await go(toUpper(input))
  if (err) return errorHandler(err)
  print(value)
}
 
// Works normally.
foo('gunar')
// "GUNAR"
 
// Business Logic Error gets handled by errorHandler().
foo('invalid')
// "There has been an error. I'll handle it."
 
// Runtime Exceptions DO NOT get handled by errorHandler(),
foo(555555).catch(e => {
  // but can be caught.
  console.log(e)
  // TypeError: string.toUpperCase is not a function
})

License

MIT http://gunar.mit-license.org

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.2
    14
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.2
    14
  • 1.0.1
    0
  • 1.0.0
    0

Package Sidebar

Install

npm i go-for-it

Weekly Downloads

14

Version

1.0.2

License

MIT

Last publish

Collaborators

  • gunar