- From: Dan Ostrowski <notifications@github.com>
- Date: Thu, 27 Aug 2015 11:43:12 -0700
- To: whatwg/fetch <fetch@noreply.github.com>
Received on Thursday, 27 August 2015 18:43:50 UTC
@pornel the problem I see with what you wrote is that the `xhr` object in `oldFetch` will NOT have a timeout so it might complete and call `resolve` itself or, also confusing, fail and you'd get two `reject` calls. Am I reading that right? What would stop that?
I think you *have* to set `xhr.timeout = X;` in fetch and then use `xhr.ontimeout` to call `reject` because ultimately the `xhr` object is the source of truth about whether to proceed or not.
Basically you just need to add to `fetch`:
```javascript
xhr.timeout = request.options.timeout || 0;
```
sometime before the `.send` and something like this near where onerror is defined:
```javascript
xhr.ontimeout = function() {
reject(new TypeError('Request timeout'));
}
```
then this should work as expected...
```javascript
fetch('/users', {
timeout: 300
}).then(function(response) {console.log('made it!');
}).catch(function(e) {console.log(e);})
```
---
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/20#issuecomment-135519052
Received on Thursday, 27 August 2015 18:43:50 UTC