- From: Jake Archibald <notifications@github.com>
- Date: Mon, 30 Mar 2015 03:45:02 -0700
- To: whatwg/fetch <fetch@noreply.github.com>
- Message-ID: <whatwg/fetch/issues/27/87632086@github.com>
@WebReflection Thanks for doing this. ```js var p1 = new Promise(function (resolve, reject, ifCanceled) { var internal = setTimeout(resolve.bind(null, 123), 1000); ifCanceled(function () { console.log('been cancelled'); }); }); var p2 = p1.then(function (val) { console.log('done1 ' + val); }, function (err) { console.log('error1'); }); var p3 = p2.cancel().then(function () { console.log('post-cancel resolve'); }, function() { console.log('post-cancel reject'); }); var p4 = p1.then(function(val) { console.log('done2 ' + val); }, function() { console.log('error2'); }); ``` Logs: ([live example](https://jsbin.com/hebipi/edit?js,console)) ``` "been cancelled" "post-cancel resolve" "done2 undefined" ``` It feels weird to me that `p2.cancel()` would result in the original `p1` promise cancelling, affecting other children that didn't cancel and were unable to observe that cancellation. I can't really work out why neither `'done1 ' + val` or `'error1'` is logged, but `'done2 ' + val` is logged, and has resolved with `undefined`. --- Reply to this email directly or view it on GitHub: https://github.com/whatwg/fetch/issues/27#issuecomment-87632086
Received on Monday, 30 March 2015 10:45:24 UTC