From 45fea4dca7f925978af1833b16a0b87e28d658a7 Mon Sep 17 00:00:00 2001 From: SleepWalker Date: Thu, 2 Jun 2016 22:13:24 +0300 Subject: [PATCH] Wrap fetch in Promise to allow usage of Promise.prototype.finally on promises returned from request service --- src/services/request.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/services/request.js b/src/services/request.js index e882afa..81099a2 100644 --- a/src/services/request.js +++ b/src/services/request.js @@ -26,6 +26,12 @@ function buildQuery(data = {}) { ; } +function doFetch(...args) { + // NOTE: we are wrapping fetch, because it is returning + // Promise instance that can not be pollyfilled with Promise.prototype.finally + return new Promise((resolve, reject) => fetch(...args).then(resolve, reject)); +} + let authToken; const checkStatus = (resp) => Promise[resp.status >= 200 && resp.status < 300 ? 'resolve' : 'reject'](resp); @@ -45,7 +51,7 @@ const getDefaultHeaders = () => { export default { post(url, data) { - return fetch(url, { + return doFetch(url, { method: 'POST', headers: { ...getDefaultHeaders(), @@ -65,7 +71,7 @@ export default { url += separator + buildQuery(data); } - return fetch(url, { + return doFetch(url, { headers: getDefaultHeaders() }) .then(checkStatus)