https://github.com/kyleross/await-handler
Basic wrapper for await that allows handling of errors without try/catch blocks
https://github.com/kyleross/await-handler
async-await await error-handling handler node node8 nodejs npm-module promise
Last synced: 7 days ago
JSON representation
Basic wrapper for await that allows handling of errors without try/catch blocks
- Host: GitHub
- URL: https://github.com/kyleross/await-handler
- Owner: KyleRoss
- License: mit
- Created: 2017-11-02T16:35:17.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-11-18T17:29:59.000Z (over 2 years ago)
- Last Synced: 2025-05-04T09:30:37.725Z (10 days ago)
- Topics: async-await, await, error-handling, handler, node, node8, nodejs, npm-module, promise
- Language: JavaScript
- Size: 14.6 KB
- Stars: 15
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# await-handler
[](https://www.npmjs.com/package/await-handler) [](https://www.npmjs.com/package/await-handler) [](https://david-dm.org/KyleRoss/await-handler) [](https://travis-ci.org/KyleRoss/await-handler) [](https://github.com/KyleRoss/await-handler/blob/master/LICENSE) [](https://beerpay.io/KyleRoss/await-handler)Simple signature to ease the paid of catching errors using async/await. This module will allow a simple method of catching errors from an `await` handler without the need to wrap everything in try/catch blocks. This module is a Node.js only version based on [await-to-js](https://github.com/scopsy/await-to-js) minus the typescript aspect. Credit for this module goes to [Dima Grossman](http://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/), as it was based off the code provided.
You continue to use async/await normally, except to wrap the function you are "awaiting", in this module to allow destructuring the returned array into variables. This is similar to the golang error handling syntax.
**NOTE:** This module works in Node 6+, but in order to use async/await, you need to use Node 8+ or compile with Babel.
## Install
Install via NPM:
```
npm i await-handler --save
```## Usage
```js
const on = require('await-handler');async function asyncFunctionExample() {
let [err, result] = await on(myAsyncTask());
if(err) {
throw err;
}
// ... handle the result
console.log(result);
}
```## API
### on(promise[, errorProps])
**Type:** FunctionAdds handler to `promise` in order to return an array which can be destructured. Optionally add additional properties to the returned error by providing an Object to `errorProps`.
| Argument | Required? | Type | Description |
|------------|-----------|---------|------------------------------------------------------------|
| promise | Yes | Promise | Promise to wrap and return results for. |
| errorProps | No | Object | Optional object to append to the `Error` if one is thrown. |**Examples:**
```js
async function basicExample() {
let [err, result] = await on(myAsyncTask());
if(err) throw err;
// ... handle the result
console.log(result);
}async function errorPropsExample() {
let [err, result] = await on(myAsyncTask(), { customMessage: 'Something failed!' });
if(err) {
console.error(err.customMessage);
return process.exit(1);
}
// ... handle the result
console.log(result);
}
```###### Returns _{Promise<Array>}_
> Returns Promise that resolves with array signature `[error, results]`. If an error is thrown, `error` will be the the rejection from the promise and `results` will be `undefined`. If an error is not thrown, `error` will be `null` and `results` will be the resolved value from the promise.---
## Tests
To run the tests:```
npm install
npm run test
```## License
MIT License. See [License](https://github.com/KyleRoss/await-handler/blob/master/LICENSE) in the repository.