Re: [fetch] Aborting a fetch (#27)

> That's precisely the point I've made many times in this thread, that you don't always need both

and that's my point and implementation too. You expose the cancel-ability **only** if you define a method to cancel. Actually my code goes further than that, if you don't internally define a method to cancel and you use `p.cancel()` just for fun, you gonna have an error because I am proposing indeed backward compatibility.

The implicit cancellation suits perfectly `fetch` because it doesn't matter what happens in the core, behind the scene, as long as we know the object can be canceled, either via contrller or `.cancel()` we are good. 


My explicit promise creation is like that because **as a user, I want to be also able to create cancel-able Promises** and there it goes: if core or external APIs provides cancel-able promises, you can cancel them ... otherwise you cannot, as easy as this sound.

The `cancel` as `reject` is a Jake idea and since I've said my code would have been simplified in that way, here I come with the example that rejects through cancel: [here it is](https://gist.github.com/WebReflection/0ca8fac8013f76fb4d06)

In this case the `.cancel` rejects but then it breaks the whole chain so that this will stop at the first catch, although resolving everything without invoking.

```js
new Promise(function ($res, $rej, ifCanceled) {
  var internal = setTimeout($rej, 1000);
  ifCanceled(function () {
    clearTimeout(internal);
  });
})
.then(
  function () {
    console.log('on time');
  },
  // we'll end up here
  function () {
    console.log('error');
  }
)
.cancel({beacuse:'reason'})
// never executed
.then(function (value) {
  console.log(value);
});
```

If you are careless about errors, this might work ... but ... I honestly prefer [my first idea](https://gist.github.com/WebReflection/a015c9c02ff2482d327e), creating a mark-point in the chain where everything happened before will be ignored but whoever cancel has the ability to react after, eventually providing the resolution.

Anyway, we have 2 playgrounds now.

---
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/27#issuecomment-87724683

Received on Monday, 30 March 2015 15:34:46 UTC