@tkrotoff/fetch
Version:
Fetch wrapper
32 lines (31 loc) • 1.09 kB
JavaScript
import { HttpError } from './HttpError';
function extendResponsePromiseWithBodyMethods(responsePromise, response) {
['arrayBuffer', 'blob', 'formData', 'json', 'text'].forEach(methodName => {
responsePromise[methodName] = () => new Promise((resolve, reject) => {
if (response.ok) {
resolve(response[methodName]());
}
else {
responsePromise.catch(() => {
});
reject(new HttpError(undefined, response));
}
});
});
}
export function createResponsePromise(body, init) {
const response = new Response(body, init);
const responsePromise = new Promise((resolve, reject) => {
if (response.ok) {
resolve(response);
}
else {
reject(new HttpError(undefined, response));
}
});
extendResponsePromiseWithBodyMethods(responsePromise, response);
return responsePromise;
}
export function createJSONResponsePromise(body, init) {
return createResponsePromise(JSON.stringify(body), init);
}