@open-draft/until
Advanced tools
Comparing version 1.0.2 to 1.0.3
{ | ||
"name": "@open-draft/until", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "Gracefully handle a Promise using async/await.", | ||
"main": "lib/index.js", | ||
"repository": "git@github.com:open-draft/until.git", | ||
"repository": "open-draft/until", | ||
"author": "Artem Zakharchenko <kettanaito@gmail.com>", | ||
@@ -8,0 +8,0 @@ "license": "MIT", |
@@ -5,4 +5,35 @@ [![Build status](https://circleci.com/gh/open-draft/until.svg?style=shield)](https://circleci.com/gh/open-draft/until) | ||
Gracefully handle a Promise using async/await. | ||
Gracefully handle a Promise using `async`/`await`. | ||
## Why? | ||
With the addition of `async`/`await` keywords in ECMAScript 2017 the handling of Promises became much easier. However, one must keep in mind that the `await` keyword provides no standard error handling API. Consider this usage: | ||
```js | ||
function getUser(id) { | ||
const data = await fetchUser(id) | ||
// Work with "data"... | ||
} | ||
``` | ||
In case `fetchUser()` throws an error, the entire `getUser()` function's scope will terminate. Because of this, it's recommended to implement error handling using `try`/`catch` block wrapping `await` expressions: | ||
```js | ||
function getUser(id) | ||
let data = null | ||
try { | ||
data = await asyncAction() | ||
} catch (error) { | ||
console.error(error) | ||
} | ||
// Work with "data"... | ||
} | ||
``` | ||
While this is a semantically valid approach, constructing `try`/`catch` around each awaited operation may be tedious and get overlooked at times. Such error handling also introduces separate closures for execution and error scenarios of an asynchronous operation. | ||
This library encapsulates the `try`/`catch` error handling in a utility function that does not create a separate closure and exposes a NodeJS-friendly API to work with errors and resolved data. | ||
## Getting started | ||
@@ -16,3 +47,3 @@ | ||
### Use | ||
### Usage | ||
@@ -58,1 +89,5 @@ ```js | ||
``` | ||
## Special thanks | ||
- [giuseppegurgone](https://twitter.com/giuseppegurgone) for discussing the original `until` API |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
3620
91