# fetch() timeout

**URL:** <https://forums.fusetools.com/t/fetch-timeout/2022>\
**Category:** Show and Tell\
**Created:** [January 7, 2016, 4:25pm UTC](https://forums.fusetools.com/t/fetch-timeout/2022 "2016-01-07T16:25:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jveres](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/jveres/32/545_2.png) [@jveres](https://forums.fusetools.com/u/jveres)\
**Post date:** [January 7, 2016, 4:25pm UTC](https://forums.fusetools.com/t/fetch-timeout/2022/1 "2016-01-07T16:25:02Z")

</div>

Since fetch() doesn’t provide any way for setting a timeout for requests by design, I’ve implemented a simple wrapper Promise based solution which might come handy for your remote API calls.

```auto
var FETCH_TIMEOUT = 5000;
new Promise(function(resolve, reject) {
    var timeout = setTimeout(function() {
        reject(new Error('Request timed out'));
    }, FETCH_TIMEOUT);
    fetch('https://example.com/request&#39;)
    .then(function(response) {
        clearTimeout(timeout);
        if (response && response.status == 200) return response.json();
        else reject(new Error('Response error'));
    })
    .then(function(responseObject) {
        // process results
        resolve();
    })
    .catch(function(err) {
        reject(err);
    });
})
.then(function() {
    // request succeed
})
.catch(function(err) {
    // error: response error, request timeout or runtime error
});

```

---

<div class="post-metadata">

**Author:** ![Vegard\_Strand\_Lende](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/vegard_strand_lende/32/349_2.png) [@Vegard\_Strand\_Lende](https://forums.fusetools.com/u/Vegard_Strand_Lende)\
**Post date:** [January 8, 2016, 10:04am UTC](https://forums.fusetools.com/t/fetch-timeout/2022/2 "2016-01-08T10:04:03Z")

</div>

Nice one 🙂 We need to do something about the timeout situation

---

<div class="post-metadata">

**Author:** ![jveres](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/jveres/32/545_2.png) [@jveres](https://forums.fusetools.com/u/jveres)\
**Post date:** [January 8, 2016, 11:32am UTC](https://forums.fusetools.com/t/fetch-timeout/2022/3 "2016-01-08T11:32:41Z")

</div>

Thanks:) It’s still not perfect, though.

---

<div class="post-metadata">

**Author:** ![LuisRodriguezLD](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.fusetools.com/luisrodriguezld/32/616_2.png) [@LuisRodriguezLD](https://forums.fusetools.com/u/LuisRodriguezLD)\
**Post date:** [March 9, 2016, 10:19pm UTC](https://forums.fusetools.com/t/fetch-timeout/2022/4 "2016-03-09T22:19:17Z")

</div>

What about the timer API? I am using it and looks like it works
