{"action":"created","comment":{"url":"https://api.github.com/repos/nodejs/promises/pulls/comments/52987835","id":52987835,"diff_hunk":"@@ -0,0 +1,284 @@\n+# Glossary\n+\n+This is a glossary of terms that will be commonly used in discussion. This list\n+will be expanded in the future. **Please avoid changing existing headings as\n+users may be deep-linking to the generated anchors.**\n+\n+## Table of Contents\n+\n+* [Error Symposium](#error-symposium)\n+  * [Operational Error](#operational-error)\n+  * [Programmer Error](#programmer-error)\n+  * [Expected versus Unexpected](#expected-versus-unexpected)\n+* [Post Mortem Analysis](#post-mortem-analysis)\n+  * [Abort](#abort)\n+  * [Core / Core dump / Core file](#core--core-dump--core-file)\n+  * [Stack Frame](#stack-frame)\n+  * [Unwinding the Stack / Top of Stack](#unwinding-the-stack--top-of-stack)\n+* [Promise](#promise)\n+  * [Executor / Resolver](#executor--resolver)\n+  * [Handler](#handler)\n+  * [Settling](#settling)\n+    * [Rejection / reject](#rejection--reject)\n+    * [Resolving / resolve](#resolving--resolve)\n+  * [Synchronous Rejection](#synchronous-rejection)\n+  * [Unhandled Rejection / Rejection Handled](#unhandled-rejection--rejection-handled)\n+  * [Microtask Queue](#microtask-queue)\n+* [Links](#links)\n+\n+## Error Symposium\n+\n+An ongoing series of facilitated discussions led by **@groundwater**, originally\n+conceived at the August 2015 Node Collaborator Summit at Mozilla SF. Their goal\n+is to produce recommendations on \"best practices\" for error handling in Node.\n+\n+Notably, the conversation has been informed by the [foundational work][joyent-errors]\n+written by **@davepacheco**. This document was paraphrased by **@chrisdickinson** as\n+the part of the Node.js [error documentation][node-errors].\n+\n+[The results of their latest meeting are here][symposium-findings].\n+\n+### Operational Error\n+\n+An error that represents a known state of the program. To paraphrase the\n+[joyent error guide][joyent-errors]:\n+\n+> Operational errors represent run-time problems experienced by correctly-written\n+> programs. These are not bugs in the program. In fact, these are usually\n+> problems with something else: the system itself (e.g., out of memory or too\n+> many open files), the system's configuration (e.g., no route to a remote host),\n+> the network (e.g., socket hang-up), or a remote service (e.g., a 500 error,\n+> failure to connect, or the like).\n+\n+Notably, operational errors that are not accounted for by the programmer are\n+considered unexpected errors.\n+\n+### Programmer Error\n+\n+An error that represents a mistake on the programmer's behalf. To paraphrase the\n+[joyent error guide][joyent-errors]:\n+\n+> Programmer errors are bugs in the program. These are things that can always\n+> be avoided by changing the code. They can never be handled properly (since by\n+> definition the code in question is broken).\n+\n+By definition, these errors are unexpected.\n+\n+### Expected versus Unexpected\n+\n+Errors may be \"expected\" — anticipated by the program author at time of writing —\n+or \"unexpected\" — unforeseen by the author.\n+\n+Programmer errors are _always_ unexpected (or else the programmer would not","path":"GLOSSARY.md","position":72,"original_position":72,"commit_id":"5a61df00eed12010a2a81f8662092c0f6be43bd5","original_commit_id":"5a61df00eed12010a2a81f8662092c0f6be43bd5","user":{"login":"chrisdickinson","id":37303,"avatar_url":"https://avatars.githubusercontent.com/u/37303?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisdickinson","html_url":"https://github.com/chrisdickinson","followers_url":"https://api.github.com/users/chrisdickinson/followers","following_url":"https://api.github.com/users/chrisdickinson/following{/other_user}","gists_url":"https://api.github.com/users/chrisdickinson/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisdickinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisdickinson/subscriptions","organizations_url":"https://api.github.com/users/chrisdickinson/orgs","repos_url":"https://api.github.com/users/chrisdickinson/repos","events_url":"https://api.github.com/users/chrisdickinson/events{/privacy}","received_events_url":"https://api.github.com/users/chrisdickinson/received_events","type":"User","site_admin":false},"body":"It seems to me that a known error, per your example, is not a programmer error — it's kind of a different class of thing: the programmer is explicitly relying on exception propagation for flow control, not to communicate an error state. If it represents an error, it more closely resembles a user-defined (and expected) operational error than it does a programmer error.","created_at":"2016-02-16T09:45:38Z","updated_at":"2016-02-16T09:45:38Z","html_url":"https://github.com/nodejs/promises/pull/14#discussion_r52987835","pull_request_url":"https://api.github.com/repos/nodejs/promises/pulls/14","_links":{"self":{"href":"https://api.github.com/repos/nodejs/promises/pulls/comments/52987835"},"html":{"href":"https://github.com/nodejs/promises/pull/14#discussion_r52987835"},"pull_request":{"href":"https://api.github.com/repos/nodejs/promises/pulls/14"}}},"pull_request":{"url":"https://api.github.com/repos/nodejs/promises/pulls/14","id":59432439,"html_url":"https://github.com/nodejs/promises/pull/14","diff_url":"https://github.com/nodejs/promises/pull/14.diff","patch_url":"https://github.com/nodejs/promises/pull/14.patch","issue_url":"https://api.github.com/repos/nodejs/promises/issues/14","number":14,"state":"open","locked":false,"title":"Add a glossary","user":{"login":"chrisdickinson","id":37303,"avatar_url":"https://avatars.githubusercontent.com/u/37303?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisdickinson","html_url":"https://github.com/chrisdickinson","followers_url":"https://api.github.com/users/chrisdickinson/followers","following_url":"https://api.github.com/users/chrisdickinson/following{/other_user}","gists_url":"https://api.github.com/users/chrisdickinson/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisdickinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisdickinson/subscriptions","organizations_url":"https://api.github.com/users/chrisdickinson/orgs","repos_url":"https://api.github.com/users/chrisdickinson/repos","events_url":"https://api.github.com/users/chrisdickinson/events{/privacy}","received_events_url":"https://api.github.com/users/chrisdickinson/received_events","type":"User","site_admin":false},"body":"This defines common terms for discussion.\r\n\r\n/cc'ing @misterdjules, @petkaantonov, @kriskowal for review.","created_at":"2016-02-16T01:32:47Z","updated_at":"2016-02-16T09:45:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"07f7617966694f2a000316297fd4fb46ca84580f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/nodejs/promises/pulls/14/commits","review_comments_url":"https://api.github.com/repos/nodejs/promises/pulls/14/comments","review_comment_url":"https://api.github.com/repos/nodejs/promises/pulls/comments{/number}","comments_url":"https://api.github.com/repos/nodejs/promises/issues/14/comments","statuses_url":"https://api.github.com/repos/nodejs/promises/statuses/5a61df00eed12010a2a81f8662092c0f6be43bd5","head":{"label":"nodejs:add-glossary","ref":"add-glossary","sha":"5a61df00eed12010a2a81f8662092c0f6be43bd5","user":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"repo":{"id":51771115,"name":"promises","full_name":"nodejs/promises","owner":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/nodejs/promises","description":"Promises Working Group Repository","fork":false,"url":"https://api.github.com/repos/nodejs/promises","forks_url":"https://api.github.com/repos/nodejs/promises/forks","keys_url":"https://api.github.com/repos/nodejs/promises/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nodejs/promises/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nodejs/promises/teams","hooks_url":"https://api.github.com/repos/nodejs/promises/hooks","issue_events_url":"https://api.github.com/repos/nodejs/promises/issues/events{/number}","events_url":"https://api.github.com/repos/nodejs/promises/events","assignees_url":"https://api.github.com/repos/nodejs/promises/assignees{/user}","branches_url":"https://api.github.com/repos/nodejs/promises/branches{/branch}","tags_url":"https://api.github.com/repos/nodejs/promises/tags","blobs_url":"https://api.github.com/repos/nodejs/promises/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nodejs/promises/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nodejs/promises/git/refs{/sha}","trees_url":"https://api.github.com/repos/nodejs/promises/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nodejs/promises/statuses/{sha}","languages_url":"https://api.github.com/repos/nodejs/promises/languages","stargazers_url":"https://api.github.com/repos/nodejs/promises/stargazers","contributors_url":"https://api.github.com/repos/nodejs/promises/contributors","subscribers_url":"https://api.github.com/repos/nodejs/promises/subscribers","subscription_url":"https://api.github.com/repos/nodejs/promises/subscription","commits_url":"https://api.github.com/repos/nodejs/promises/commits{/sha}","git_commits_url":"https://api.github.com/repos/nodejs/promises/git/commits{/sha}","comments_url":"https://api.github.com/repos/nodejs/promises/comments{/number}","issue_comment_url":"https://api.github.com/repos/nodejs/promises/issues/comments{/number}","contents_url":"https://api.github.com/repos/nodejs/promises/contents/{+path}","compare_url":"https://api.github.com/repos/nodejs/promises/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nodejs/promises/merges","archive_url":"https://api.github.com/repos/nodejs/promises/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nodejs/promises/downloads","issues_url":"https://api.github.com/repos/nodejs/promises/issues{/number}","pulls_url":"https://api.github.com/repos/nodejs/promises/pulls{/number}","milestones_url":"https://api.github.com/repos/nodejs/promises/milestones{/number}","notifications_url":"https://api.github.com/repos/nodejs/promises/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nodejs/promises/labels{/name}","releases_url":"https://api.github.com/repos/nodejs/promises/releases{/id}","deployments_url":"https://api.github.com/repos/nodejs/promises/deployments","created_at":"2016-02-15T17:05:21Z","updated_at":"2016-02-16T09:37:52Z","pushed_at":"2016-02-16T07:16:55Z","git_url":"git://github.com/nodejs/promises.git","ssh_url":"git@github.com:nodejs/promises.git","clone_url":"https://github.com/nodejs/promises.git","svn_url":"https://github.com/nodejs/promises","homepage":null,"size":11,"stargazers_count":13,"watchers_count":13,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":14,"forks":1,"open_issues":14,"watchers":13,"default_branch":"master"}},"base":{"label":"nodejs:master","ref":"master","sha":"2655902c8206c5646df3de873007e447da0bff21","user":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"repo":{"id":51771115,"name":"promises","full_name":"nodejs/promises","owner":{"login":"nodejs","id":9950313,"avatar_url":"https://avatars.githubusercontent.com/u/9950313?v=3","gravatar_id":"","url":"https://api.github.com/users/nodejs","html_url":"https://github.com/nodejs","followers_url":"https://api.github.com/users/nodejs/followers","following_url":"https://api.github.com/users/nodejs/following{/other_user}","gists_url":"https://api.github.com/users/nodejs/gists{/gist_id}","starred_url":"https://api.github.com/users/nodejs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nodejs/subscriptions","organizations_url":"https://api.github.com/users/nodejs/orgs","repos_url":"https://api.github.com/users/nodejs/repos","events_url":"https://api.github.com/users/nodejs/events{/privacy}","received_events_url":"https://api.github.com/users/nodejs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/nodejs/promises","description":"Promises Working Group Repository","fork":false,"url":"https://api.github.com/repos/nodejs/promises","forks_url":"https://api.github.com/repos/nodejs/promises/forks","keys_url":"https://api.github.com/repos/nodejs/promises/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nodejs/promises/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nodejs/promises/teams","hooks_url":"https://api.github.com/repos/nodejs/promises/hooks","issue_events_url":"https://api.github.com/repos/nodejs/promises/issues/events{/number}","events_url":"https://api.github.com/repos/nodejs/promises/events","assignees_url":"https://api.github.com/repos/nodejs/promises/assignees{/user}","branches_url":"https://api.github.com/repos/nodejs/promises/branches{/branch}","tags_url":"https://api.github.com/repos/nodejs/promises/tags","blobs_url":"https://api.github.com/repos/nodejs/promises/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nodejs/promises/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nodejs/promises/git/refs{/sha}","trees_url":"https://api.github.com/repos/nodejs/promises/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nodejs/promises/statuses/{sha}","languages_url":"https://api.github.com/repos/nodejs/promises/languages","stargazers_url":"https://api.github.com/repos/nodejs/promises/stargazers","contributors_url":"https://api.github.com/repos/nodejs/promises/contributors","subscribers_url":"https://api.github.com/repos/nodejs/promises/subscribers","subscription_url":"https://api.github.com/repos/nodejs/promises/subscription","commits_url":"https://api.github.com/repos/nodejs/promises/commits{/sha}","git_commits_url":"https://api.github.com/repos/nodejs/promises/git/commits{/sha}","comments_url":"https://api.github.com/repos/nodejs/promises/comments{/number}","issue_comment_url":"https://api.github.com/repos/nodejs/promises/issues/comments{/number}","contents_url":"https://api.github.com/repos/nodejs/promises/contents/{+path}","compare_url":"https://api.github.com/repos/nodejs/promises/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nodejs/promises/merges","archive_url":"https://api.github.com/repos/nodejs/promises/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nodejs/promises/downloads","issues_url":"https://api.github.com/repos/nodejs/promises/issues{/number}","pulls_url":"https://api.github.com/repos/nodejs/promises/pulls{/number}","milestones_url":"https://api.github.com/repos/nodejs/promises/milestones{/number}","notifications_url":"https://api.github.com/repos/nodejs/promises/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nodejs/promises/labels{/name}","releases_url":"https://api.github.com/repos/nodejs/promises/releases{/id}","deployments_url":"https://api.github.com/repos/nodejs/promises/deployments","created_at":"2016-02-15T17:05:21Z","updated_at":"2016-02-16T09:37:52Z","pushed_at":"2016-02-16T07:16:55Z","git_url":"git://github.com/nodejs/promises.git","ssh_url":"git@github.com:nodejs/promises.git","clone_url":"https://github.com/nodejs/promises.git","svn_url":"https://github.com/nodejs/promises","homepage":null,"size":11,"stargazers_count":13,"watchers_count":13,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":14,"forks":1,"open_issues":14,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/nodejs/promises/pulls/14"},"html":{"href":"https://github.com/nodejs/promises/pull/14"},"issue":{"href":"https://api.github.com/repos/nodejs/promises/issues/14"},"comments":{"href":"https://api.github.com/repos/nodejs/promises/issues/14/comments"},"review_comments":{"href":"https://api.github.com/repos/nodejs/promises/pulls/14/comments"},"review_comment":{"href":"https://api.github.com/repos/nodejs/promises/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/nodejs/promises/pulls/14/commits"},"statuses":{"href":"https://api.github.com/repos/nodejs/promises/statuses/5a61df00eed12010a2a81f8662092c0f6be43bd5"}}}}