You might try reading through some of the previous threads that talk about the trickiness of surfacing promise errors in the general case.

Unfortunately these threads usually devolve into an endless thread of discussion and debate that become next to impossible to actually read through later without several hours of spare time and a bottle of whiskey... But here's a recent one that's not *too* long and kind of talks about a couple of ideas:

https://esdiscuss.org/topic/async-await-improvements (long, but talks about a couple potential/proposed solutions)

-Jeff

On 1/13/15 7:44 AM, Marius Gundersen wrote:
A `promise.done()` method that throws if it receives a rejected promise has been discussed, but the consensus seems to be that browsers instead should report on rejected unhandled promises that are garbage collected. This is already implemented in Firefox (at least in the DevTools edition), where the following code will end up with an error in the console:

```js
var p = new Promise(function(){throw new Error("oh noes");})
p = null;
```

Since there is no way to handle the thrown error outside the promise (the exception is thrown after the function returns) there isn't any reason for the exception to travel up the stack. Either the exception must be handled as a rejected promise or it must be handled in something like `window.onerror`.

Marius Gundersen

On Tue, Jan 13, 2015 at 12:35 PM, Boopathi Rajaa <[email protected] <mailto:[email protected]>> wrote:

    ```
    Promise
      .resolve()
      .then(function(){
        throw new Error('asdf');
      });
    ```

    Bluebird: (errors thrown - Good)
    http://jsbin.com/kahuzi/1/edit?html,js,console

    native ES6:(errors not thrown)
    http://jsbin.com/qivobibowa/3/edit?html,js,console

    Shouldn't all Uncaught errors be thrown, instead of catching it
    inside the promise only ? For example, If I use Promise within a
    promise, the uncaught error in the inner Promise will never be
    exposed to the outside world and there is no way to bubble it up
    to the outside blocks.

    `.catch(function(err) { throw err; }) `

    will also be caught and nothing would be thrown.

    - Boopathi

    _______________________________________________
    es-discuss mailing list
    [email protected] <mailto:[email protected]>
    https://mail.mozilla.org/listinfo/es-discuss




_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to