UNPKG

@tkrotoff/fetch

Version:
32 lines (31 loc) 1.09 kB
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); }