Skip to content

Instantly share code, notes, and snippets.

@victorwpbastos
Last active September 18, 2017 16:21
Show Gist options
  • Save victorwpbastos/335f8d075da1a6776738ef1888699f6a to your computer and use it in GitHub Desktop.
Save victorwpbastos/335f8d075da1a6776738ef1888699f6a to your computer and use it in GitHub Desktop.
Fetch interceptor
let _fetch = window.fetch;
window.fetch = (url, options) => {
return new Promise((resolve, reject) => {
let p = _fetch(url, options);
document.dispatchEvent(new CustomEvent('fetchStart', { detail: p }));
p.then(response => {
if (response.ok) {
return response;
} else {
let error = new Error(response.statusText);
error.response = response;
throw error;
}
}).catch(error => {
document.dispatchEvent(new CustomEvent('fetchError', { detail: error.response }));
reject(error);
}).then(response => {
document.dispatchEvent(new CustomEvent('fetchEnd', { detail: response }));
resolve(response);
});
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment