Skip to content

Instantly share code, notes, and snippets.

@jsocol
Last active April 14, 2017 12:19
Show Gist options
  • Save jsocol/eb8c08e3002ba2daed0eecaffa371faf to your computer and use it in GitHub Desktop.
Save jsocol/eb8c08e3002ba2daed0eecaffa371faf to your computer and use it in GitHub Desktop.

Revisions

  1. jsocol revised this gist Apr 14, 2017. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions async.js
    Original file line number Diff line number Diff line change
    @@ -1,17 +1,17 @@
    // Logs 'rejected', 'sync error'
    // Logs 'rejected Error: sync error'
    const p = new Promise((resolve, reject) => {
    throw new Error('sync error');
    }).then(null, e => console.log('rejected', e));

    // q never settles, uncaught error
    const q = new Promise((resolve, reject) => {
    setTimeout(() => { throw new Error('async error'); }, 500);
    setImmediate(() => { throw new Error('async error'); });
    }).then(null, e => console.log('rejected', e));

    // r never settles, catch never executes
    try {
    const r = new Promise((resolve, reject) => {
    setTimeout(() => { throw new Error('async error'); }, 500);
    setImmediate(() => { throw new Error('async error'); });
    }).then(null, e => console.log('rejected', e));
    } catch (err) {
    console.log('caught', err);
  2. jsocol created this gist Apr 14, 2017.
    18 changes: 18 additions & 0 deletions async.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    // Logs 'rejected', 'sync error'
    const p = new Promise((resolve, reject) => {
    throw new Error('sync error');
    }).then(null, e => console.log('rejected', e));

    // q never settles, uncaught error
    const q = new Promise((resolve, reject) => {
    setTimeout(() => { throw new Error('async error'); }, 500);
    }).then(null, e => console.log('rejected', e));

    // r never settles, catch never executes
    try {
    const r = new Promise((resolve, reject) => {
    setTimeout(() => { throw new Error('async error'); }, 500);
    }).then(null, e => console.log('rejected', e));
    } catch (err) {
    console.log('caught', err);
    }