Comments (3)
Yes, the spec defines that the error is captured as the rejection reason of the promise returned from then
:
3.2.6.2 If either
onFulfilled
oronRejected
throws an exception,promise2
must be rejected with the thrown exception as the reason.
You seem to be throwing away that returned promise (promise2
in the spec), which is the root of your problem.
As always, consider the sync analog.
promiseSomething().then(function(result){
var s = new SomeObj();
s.doSomething(); // this error is swallowed
}, function(){
// this obviously won't catch the error
});
becomes
try {
promiseSomething();
} catch {
// this obviously won't catch the error
}
var s = new SomeObj();
s.doSomething(); // this error is not caught
where obviously the error will not be caught. However, if you add the .then(undefined, function errhandler(){})
as you suggest, it becomes
try {
promiseSomething();
} catch {
// this obviously won't catch the error
}
try {
var s = new SomeObj();
s.doSomething();
} catch (err) {
errhandler(err);
}
See also this explanation over in the Q readme.
We are discussing how to fix the problem that, with promises, errors are swallowed instead of handled by the host platform, over in the unhandled rejections spec area. In particular, see this background thread.
from promises-spec.
Ah thanks.
Glad to hear it's being discussed, and thanks for pointing out the Q readme point. I'd read that before, but not while tackling my own implementation.
I just implemented my own console.unhandledRejection
checking and it's working nicely.
Thanks again!
from promises-spec.
I just implemented my own
console.unhandledRejection
checking and it's working nicely.
That'll be sweet!
from promises-spec.
Related Issues (20)
- Can you assist me in satisfying promises aplus spec 2.2.4 in NodeJS? HOT 4
- here is a Chinese translation HOT 1
- Confused terminology: resolve and fulfill HOT 3
- Proposal: Make clear in the spec that the Promise constructor runs the provided function body immediately HOT 1
- Relationship with ECMA-262 ยง 25.4.2 - Promise Jobs HOT 4
- What is the intention behind clause 2.2.4 of Promise/A+ spec? HOT 5
- change "if x is a promise" to something non-circular and clear HOT 7
- clarify "is an object or function" HOT 10
- Clarify ambiguity between promises and thenables w.r.t. 2.3.2.1? HOT 5
- Promise Resolution Procedure 3.iii: What if then never calls its arguments? HOT 2
- UnhandledPromiseRejectionWarning HOT 3
- Some imprecise points in this spec HOT 22
- Question about **promise resolution procedure** 2.3.2 HOT 2
- Adopting state without .then() HOT 2
- Support translation
- What happened? please see code
- please see code HOT 1
- Rust promise implementation
- Add my implementation of promises
- Confused about the point of 2.3.2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from promises-spec.