3 ms·
Might be a naive question, but how does this compare to existing Promise libraries that have cancellation (like bluebird)? http://bluebirdjs.com/docs/api/cance
by sampl 9y ago
Might be a naive question, but how does this compare to existing Promise libraries that have cancellation (like bluebird)?
http://bluebirdjs.com/docs/api/cancellation.html http://bluebirdjs.com/docs/api/cancellation.html
- photonios 9y agoHere's an example: in Bluebird, cancelation doesn't propagate upstream. After registering onCancel in a promise constructor, you have to call .cancel() on that exact promise object. Calling .cancel() in any child promise created with .then() or .catch() will not abort the work, rendering the feature useless for the most common use case! True cancelation must propagate upstream, prevent all pending work, and immediately free resources and memory. From the README
- sampl 9y agoD'oh, thanks
- code-e 9y agoBut the linked bluebird docs says: As an optimization, the cancellation signal propagates upwards the promise chain so that an ongoing operation e.g. network request can be aborted.
- Mitranim 9y agoInteresting! This must be new. Bluebird didn't have upstream cancelation last time I checked. Now it might actually be viable. Should update the readme. Thanks! Unfortunately it's still not viable in the browser due to its size, promises too easily get converted into non-cancelables, and worst of all, async/await forces native promises. If you want cancelable coroutines, you're forced to roll a generator-based implementation such as what Posterus provides.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- inglor 9y agoAm bluebird collaborator - confirming cancellation does everything this library does - but also componses and ref-counts to work with one-to-many flawlessly.
- Mitranim 9y agoGlad it works for you! Kind of answered in another subthread: https://news.ycombinator.com/item?id=14963524 https://news.ycombinator.com/item?id=14963524