- From: Jake Archibald <notifications@github.com>
- Date: Tue, 24 Jan 2017 09:07:34 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/issues/455/274869169@github.com>
# Summary
## Decided
**We're looking for something that cancels the request, but also the response if it's in-flight**. This means aborting the body stream if the response body is in-flight.
**We're dismissing 'tokens' as an API**. Although they work well for cancellation, they don't work well for other modifiers like "priority change".
**Adding methods to the return value of `fetch()` feels too risky**. The API gets pretty confusing. The 'species' could be a regular promise:
```js
let fetchling = fetch(url);
// Works…
fetchling.cancel();
fetchling = fetch(url).then(r => r.json());
// Does not work, "cancel" is undefined.
fetchling.cancel();
```
Although this provides an easy way to return a regular promise, it's pretty confusing. If `.then` created a controllable fetch promise:
```js
let fetchling = fetch(url).then(r => r.json());
// Works as expected:
fetchling.cancel();
fetchling = fetch(url).then(() => fetch(anotherURL));
// Only cancels the first fetch, which is weird:
fetchling.cancel();
const fetches = Promise.all([
fetch(url1),
fetch(url2),
fetch(url3)
]);
// Does not work, "cancel" is undefined
fetches.cancel();
```
**We're going to move forward with the revealing-function pattern**.
```js
fetch(url, {
});
```
what happens when cancel
service worker can only observe
abort returns promise
observable addeventlistener
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/455#issuecomment-274869169
Received on Tuesday, 24 January 2017 17:08:06 UTC