{"_id":"await-on","_rev":"4-0b94a98969cf3dc51b12522ca9338cb3","name":"await-on","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.1":{"name":"await-on","version":"0.1.1","description":"really simple error handling with await/async","main":"lib/await-on.js","directories":{"lib":"lib"},"scripts":{"test":"tap test/*.js --coverage"},"keywords":["await","async","error","handler","handling","simple","try","catch","block","promise"],"repository":{"type":"git","url":"git+https://github.com/bitstrider/await-on.git"},"author":{"name":"Jason Yung"},"license":"MIT","devDependencies":{"tap":"^10.7.2"},"engines":{"node":">=7.6"},"gitHead":"a3a531fe814df7bb08977b362432fe31990cceae","bugs":{"url":"https://github.com/bitstrider/await-on/issues"},"homepage":"https://github.com/bitstrider/await-on#readme","_id":"await-on@0.1.1","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"bitstrider","email":"json.yung@gmail.com"},"dist":{"integrity":"sha512-44sga9C15Cw9epxKlOan72DjLZppdUNv5dw5d1XsZP9QTicn/0B9OelE90zBqtTKVnzN5+uLHFQTfJcqG8NJVw==","shasum":"b6318c94d63426224e518e0b16b31a08faf2fdef","tarball":"https://registry.npmjs.org/await-on/-/await-on-0.1.1.tgz","fileCount":5,"unpackedSize":5148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIY+UCRA9TVsSAnZWagAAXtMP/AnHU0WvDFGNFenyedJb\nwCjsRVCOcV7l4WbcmmImYoVM/mGHPd53Oq77wTYioC4Z2ZicH5QyjIFNwg6f\n6m/VdwTr/PSeak8yVsF12ll+Y19+N/1kpp2Vx5mCnq1qvuEU9tn+LBjpYlWw\n4jfu/gFPThR2LF3K+HCyDkIolqjKIQgpOttgrVj7GGz30xIQTiR5TfaP4eKF\n6zBBje+V5cIY0okVe7ZZDJFTwYplXQ08gKU/iPOg2RaEq0Cyvn9VKFO7tIyQ\njSnTgRLplcXG1cec2a/DxOQF9ECYj4xsxgTC86cYxDc3LseobOIgKv3Vi9mj\n9Zn1ZI8nQAmVjYvgeIsseVOMPqrhTxd6RqLZxafn4Y9zGX8JmJspyCJGp2dF\n6MZnhogfM5sF7qPLYAxoxivlOSTFFDbiFZ8wGGjuZZQj3sp/tjwnYaN1wXCM\nl1hUrgthJXH4tGV+z2zeFbC5WinG7XnVpxn0q3husMIDJhQDS+cACsimInpp\nYKJTIchWQT/Cv6zxxlg/Aq57edVz2o1PQNtfgR6DGuXsGYu9Fapmrguyg5R2\nbOqUzyGgjKxZf7TVau6A/R8qesgBcfvM5pQrev2rj4eTia/3W54qGpP79EDG\nk6PTLy9x8BRmJegrlyUWTciDq6Z8NLBL/CZjknEwt4N085xiNJpZv69Nu0tx\nypTJ\r\n=Z+M2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHB395ixJjgqwzmST/OenyFI+d5SC/d9LHQOPO0l7xUoAiEA41LtQ6TjaaRAtm3UnSO07mNLcY8xymnTf3hSSA3xKn4="}]},"maintainers":[{"name":"bitstrider","email":"json.yung@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/await-on_0.1.1_1528926098834_0.8538515003368976"},"_hasShrinkwrap":false},"0.1.3":{"name":"await-on","version":"0.1.3","description":"really simple error handling with await/async","main":"lib/await-on.js","directories":{"lib":"lib"},"scripts":{"test":"tap test/*.js --coverage"},"keywords":["await","async","error","handler","handling","simple","try","catch","block","promise"],"repository":{"type":"git","url":"git+https://github.com/bitstrider/await-on.git"},"author":{"name":"Jason Yung"},"license":"MIT","devDependencies":{"tap":"^10.7.2"},"engines":{"node":">=7.6"},"gitHead":"7ff22233d899dfe86a239eceb5b15c12092b3f0b","bugs":{"url":"https://github.com/bitstrider/await-on/issues"},"homepage":"https://github.com/bitstrider/await-on#readme","_id":"await-on@0.1.3","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"bitstrider","email":"json.yung@gmail.com"},"dist":{"integrity":"sha512-c+7zIkPC3ns5Zk7MOGHrrTbouMl3h5WppHlOPcoQCf3qUhWt0zaNCRf76an1fvHNef/g5KlnVUc2J0vr7awz0g==","shasum":"18b202231e95d8868a751e341098f1ec845561b3","tarball":"https://registry.npmjs.org/await-on/-/await-on-0.1.3.tgz","fileCount":5,"unpackedSize":5147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIaU9CRA9TVsSAnZWagAA1UsP/RA41skx/KP19lfw6cVN\nXG5KT0nrdr6NFZ5ts370NYHQuhw/GodaQKHpRp8BJVEhCC+f1GvmZbFK0AqK\niuEqmUGIlrWnEqxA+eSp7CgfVpDPZqq/x5zgRCFsubOimZknWmjxPtY2FmEr\nx1/FgCoe0YptPo4lqZVFRFwZTe4+NnwWKPFmxxoPKqRN7+clD+A1kLP2ORL+\nmbV3nGekQuAY0QIFy84ThlRJqC0fD6JO+N0brXh5GYbtek8AKhV8961oD0cP\n77HAKyUoaTT9ukFe/aRafN8VJzCUMQPkdeN5dACXaMSyIpz3+VbK/XCElJ+o\nwtUODoMAD7xKpAbsxikz5IiQ6Nvertqa1FV3yKv3b7Pf6dUxjCEhQPAe6W+v\nxpuIgwwBkAcpkFXmFADmynqDhnSfx6AXP4/7LBOiGOYQ6XU0rfI5CYCwn0eW\nABnnxqaKYT8SUXy1CqdLzFpWwT5nxA4X4xharIptEHava/E0Es8H3gTFYsub\nusEjERF6sc0V1lsT8WxBNBdC747/qoIqU6fBmE+fLoButwjN2KOwwxvzsQgl\nBtG716lVCMgswYWo6beU22bD8BtMcQRnL2wdYXfl9a8wr5t6pLw3TGjXmD+J\nG2l8NQ1t/50DpvJ3m9opgZlht6PrQlSsTl1fPdYz5KRme6oAw715Hk0IR7b7\nS78X\r\n=My6V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJseqs2oln2liYjYbp15zZRCbUo/hd2hlyzwEGWRS5uwIgIJluh/b9HGB1cE/OCvLJ6d+GkbaTSYnUahdETFF8uqE="}]},"maintainers":[{"name":"bitstrider","email":"json.yung@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/await-on_0.1.3_1528931644283_0.18455750225164347"},"_hasShrinkwrap":false},"0.1.4":{"name":"await-on","version":"0.1.4","description":"really simple error handling with await/async","main":"lib/await-on.js","directories":{"lib":"lib"},"scripts":{"test":"tap test/*.js --coverage"},"keywords":["await","async","error","handler","handling","simple","try","catch","block","promise"],"repository":{"type":"git","url":"git+https://github.com/json2d/await-on.git"},"author":{"name":"Jason Yung"},"license":"MIT","devDependencies":{"bluebird":"^3.5.4","tap":"^14.6.1"},"engines":{"node":">=7.6"},"gitHead":"51d764e009dc2cb6cb0edde019c49cdba38ee3cb","bugs":{"url":"https://github.com/json2d/await-on/issues"},"homepage":"https://github.com/json2d/await-on#readme","_id":"await-on@0.1.4","_nodeVersion":"10.14.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-m9Oi6sNpk0ilwWgfbPBQENb3HMTPjwlreMWnJi3LASNtKXtlhn9FcAMD/b+U2KsvJLUUunEjRqCSK69tNDjy6g==","shasum":"df2c6e1ab378431c2602f44cbedcc65bc00aeb35","tarball":"https://registry.npmjs.org/await-on/-/await-on-0.1.4.tgz","fileCount":5,"unpackedSize":5879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSK8PCRA9TVsSAnZWagAAajYQAJ65fuy8QWFufVcM2WDS\nAEx/Lx8GRIXvW6PWZI0SSWoriVmoq0+ip/P5w6N8VWKsyqJ7B7BoeXd15yqL\nlUpVQK508r0Xe7a765fpLmKUaU+dG5AORTkoCSK7tPqkvjhOaMGgEJWRj4Ap\nNCSG7z2Tsw/LgiAe4gnMISulLOpMN4Dqc23+BjpqHKbGA5wnjuMNaO6FgiPV\nqfvLGNkCwLSFXOBaC4ZrmPSexpjEIOlE+elgZUxMfw4F8Ycs/ufR6swomNMx\nyR2MmAfkOLYnNfAAKZYzUlMRbRLm+vxQSo8lAkXR/QqgszEnR6yCjif91BFq\nLceYsRhHEwaipjOOuR5erlHi67u/1fMNnq0Q5DwxPQXOskGYz/QD/961DLqj\n7eP1LawpbKMeqCs1d5jxlzL+dku3CUkI1kOWRr1cyS/LrMOxcvCEvriwnBd2\niiyxRpVh3k2bajFjaip3dd86Lsu3fYhQDwkctIK+czLnSfylqGep9GC83R5p\nHW/KKfMH6L57yqMMUumeietlbuu1SHgQDsUg/q+E4GTRE7Ns/VCAnAJxUUgq\nLj/YOIccbQ8pNQn8JkscBtndJke+UbpewX9l4JoYBfRAkVcM0s3izDwYe7R9\nrm74bvN0k2iGVydrnhrWfSjVKRM/juAZU0RXVjyHwK8qEUuiBMwlJLTIhtDu\n9aQA\r\n=i8Id\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID4PxLWtJq27tgcxsOP50Ww2x9Pxu9TNvQ53aAw2rGQMAiEAm4pKi/OkOxp+zcLJ9C9WdeWksk/uhi3rRjdVamoTVpM="}]},"maintainers":[{"email":"json.yung@gmail.com","name":"json2d"}],"_npmUser":{"name":"json2d","email":"json.yung@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/await-on_0.1.4_1565044495355_0.8190363616095102"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-13T21:41:38.834Z","0.1.1":"2018-06-13T21:41:38.891Z","modified":"2022-04-11T16:13:56.472Z","0.1.3":"2018-06-13T23:14:04.553Z","0.1.4":"2019-08-05T22:34:55.461Z"},"maintainers":[{"email":"json.yung@gmail.com","name":"json2d"}],"description":"really simple error handling with await/async","homepage":"https://github.com/json2d/await-on#readme","keywords":["await","async","error","handler","handling","simple","try","catch","block","promise"],"repository":{"type":"git","url":"git+https://github.com/json2d/await-on.git"},"author":{"name":"Jason Yung"},"bugs":{"url":"https://github.com/json2d/await-on/issues"},"license":"MIT","readme":"# 😪 await-on\r\n![npm](https://img.shields.io/npm/v/await-on.svg)\r\n![node](https://img.shields.io/node/v/await-on.svg)\r\n![npm](https://img.shields.io/npm/l/await-on.svg)\r\n![npm](https://img.shields.io/npm/dt/await-on.svg)\r\n![Travis](https://img.shields.io/travis/bitstrider/await-on.svg)\r\n![Coveralls github](https://img.shields.io/coveralls/github/bitstrider/await-on.svg)\r\n\r\nreally simple error handling with await/async\r\n\r\ninspired by [`await-to-js`](https://github.com/scopsy/await-to-js) whose creator [Dima Grossman](http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/) originally blogged about using destructuring array assignment\r\n\r\n## Overview\r\nThis package basically provides 2 main syntaxes to choose from:\r\n```javascript\r\nconst on = require('await-on');\r\n\r\nconst fetchData = () => new Promise(/*...*/);\r\n\r\nconst [err, data] = await on(fetchData());\r\nconst [err, data] = await fetchData().handle(); //prototype extension\r\n```\r\n\r\nThe goal is to avoid the built-in approach using the `try`/`catch` block pattern:\r\n\r\n```javascript\r\ntry{\r\n\tconst data = await fetchData();\r\n\tres.send(data);\r\n}catch(err) {\r\n\tres.send(err);\r\n}\r\n```\r\n\r\n## Quick Usage\r\n\r\nusing `on` with the function `fetchData` which returns a Promise that resolve to some result `data`:\r\n```javascript\r\nconst {on} = require('await-on');\r\nconst fetchData = () => new Promise(/*...*/);\r\n\r\nasync function foo(req,res) {\r\n\tconst [err, data] = await on(fetchData());\r\n\tif(err) res.send(err);\r\n\telse res.send(data);\r\n}\r\n```\r\n\r\nusing the prototype extension `handle` on Promise types is a bit cleaner, and its potentially more readable because its also using the same chaining pattern already standard for working with Promises 🌟 :\r\n\r\n```javascript\r\nrequire('await-on');\r\n\r\nasync function foo(req,res) {\r\n\tconst [err, data] = await fetchData().handle();\r\n\t!err ? res.send(data) : res.send(err);\r\n}\r\n```\r\n\r\n\r\n## Type fuzziness\r\nNon-promises will passthrough same as the behavior of the native `await`\r\n\r\n```javascript\r\nconst [err,answer] = await on(42); //not a promise but ok no big deal\r\nconsole.log(answer) //> 42\r\n```\r\n\r\n\r\n## Decorator approach\r\nA decorator `on.handler` is also provided to wrap promise bearing functions with the handling functionalities:\r\n\r\n```javascript\r\nconst {handler} = require('await-on');\r\nlet fetchData = () => new Promise(/*...*/);\r\nfetchDataAndHandle = handler(fetchData);\r\n\r\nasync function foo(req,res) {\r\n\tconst [err, data] = await fetchDataAndHandle();\r\n\t!err ? res.send(data) : res.send(err);\r\n}\r\n```\r\n\r\n## Promises/A+ compliant support\r\nYou never know what kind of promise you'll get from an external dependency. It can be from Bluebird, Babel polyfill or some other library. `on` should work with any promise object can `then`, such as the one provided by the popular [`bluebird`](https://github.com/petkaantonov/bluebird/) package:\r\n\r\n```\r\nconst {on} = require('await-on');\r\nconst Bluebird = require('bluebird')\r\n\r\nconst fetchData = () => new Bluebird(/*...*/);\r\nconst [err, data] = await on(fetchData());\r\n```\r\n\r\n\r\n## License\r\nMIT License. See [License](https://github.com/bitstrider/await-on/blob/master/LICENSE) in the repository.\r\n","readmeFilename":"README.md"}