-
-
Save darobin/d8bda9acdd7facf931c7 to your computer and use it in GitHub Desktop.
// from the brilliant mind of sb | |
var _catch = Promise.prototype.catch; | |
Promise.prototype.catch = function () { | |
return _catch.call(this, function (err) { setTimeout(function () { throw(err); }, 0); }); | |
} | |
This is like fixing your TV by throwing out the third story window.
@greim Funny you would say that, that is exactly how I fixed my TV!
I'm missing the point, can someone give the 4th grader's explanation of what problem this solves and how?
seems straight forward to me? monkey patching catch
to throw caught errors asynchronously to be queued and looped back onto the call stack vs being potentially swallowed?
oh hm. throwing inside catch
continues the chain with a rejected promise -> unterminated chain -> swallows errors.
okay. i get it then. so the setTimeout helps to unswallow subsequent errors in the chain, because when you setTimeout, it's async, so it gets popped back onto the call stack again after it gets queued, going through the event loop, and back onto the call stack with an intact stack trace.
Isn't that the point? :)