Title: Consider exposing promise unhandled rejection hook · Issue #256 · nodejs/node · GitHub
Open Graph Title: Consider exposing promise unhandled rejection hook · Issue #256 · nodejs/node
X Title: Consider exposing promise unhandled rejection hook · Issue #256 · nodejs/node
Description: Promise unhandled rejection It is common for promise libraries to emit possibly unhandled rejections (promise chains no .catch listener or then with a second argument is attached to). Most libraries as well as native promises in V8 suppo...
Open Graph Description: Promise unhandled rejection It is common for promise libraries to emit possibly unhandled rejections (promise chains no .catch listener or then with a second argument is attached to). Most librarie...
X Description: Promise unhandled rejection It is common for promise libraries to emit possibly unhandled rejections (promise chains no .catch listener or then with a second argument is attached to). Most librarie...
Opengraph URL: https://github.com/nodejs/node/issues/256
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Consider exposing promise unhandled rejection hook","articleBody":"### Promise unhandled rejection\n\nIt is common for promise libraries to emit possibly unhandled rejections (promise chains no `.catch` listener or `then` with a second argument is attached to).\n\nMost libraries as well as native promises in V8 support [detecting these cases](https://github.com/v8/v8-git-mirror/blob/d0cad384b2db7139978cd9d4bf8135871566c72c/src/promise.js#L177). \n\nIt is common for code to have multiple promise libraries, native promises and multiple copies of the same promise library included. Sometimes people are interested in hook on such unhandled rejections in order to add custom logging, terminate the process, suppress the rejection etc. - a survey (in the later linked gist) indicates that this is used in practice by users.\n### What I'm asking for\n\nI'm asking for native promises to emit events on possibly unhandled rejections so that user level code can handle them to provide better debugging. \n\n[**Here is the actual proposal**](https://gist.github.com/benjamingr/0237932cee84712951a2)\n\nIt is currently in the seeking feedback stage.\n### Effect on user APIs\n\nNone, there is no resource penalty, API changes or backwards incompatible changes introduced by this. \n### Implementation in userland\n\nSince this change requires talking to the native V8 promise implementation which in turn cannot implement this itself since it is unaware of io, there is no possibility to implement this at a user level either because the hooks are not exposed.\n\nNon native promises (promise libraries) will implement it at a userlevel but since people are writing code that depends on native promises and they are a language feature this hook is required. \n","author":{"url":"https://github.com/benjamingr","@type":"Person","name":"benjamingr"},"datePublished":"2015-01-08T07:50:35.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":28},"url":"https://github.com/256/node/issues/256"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:3680a734-e5f9-eb7b-3771-808a59a6bd41 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D1A8:18BA88:A632A43:E9331A2:6A50E8DA |
| html-safe-nonce | 585ef917250b90e78c83aa5d885f96613674af40117d97fd78e8a0845fd4014b |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMUE4OjE4QkE4ODpBNjMyQTQzOkU5MzMxQTI6NkE1MEU4REEiLCJ2aXNpdG9yX2lkIjoiODI1ODYzMjI2MjY1ODA5MTIyNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ebb34608043dd43c7955754bda791360fddb5efad61acf3ea6155c507d544bf0 |
| hovercard-subject-tag | issue:53723638 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/256/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c65914ad586641c68b0fb76bf2943e96de8da4e2bfa91bc7ec9442919227b0ed/nodejs/node/issues/256 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c65914ad586641c68b0fb76bf2943e96de8da4e2bfa91bc7ec9442919227b0ed/nodejs/node/issues/256 |
| og:image:alt | Promise unhandled rejection It is common for promise libraries to emit possibly unhandled rejections (promise chains no .catch listener or then with a second argument is attached to). Most librarie... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | benjamingr |
| hostname | github.com |
| expected-hostname | github.com |
| None | 72b13e0e8d0319acdd27a145cfe73f4f06c791713d0ac4690e41fb68ad28cac0 |
| turbo-cache-control | no-preview |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | fb19d617b534959801b4b7453938ecf1dfa22131 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width