weddingsite/lib_old/fetchJson.js

24 lines
624 B
JavaScript

export default async function fetcher(...args) {
try {
const response = await fetch(...args);
// if the server replies, there's always some data in json
// if there's a network error, it will throw at the previous line
const data = await response.json();
if (response.ok) {
return data;
}
// console.log(JSON.stringify(data));
const error = new Error(response?.statusText || data?.message);
error.response = response;
error.data = data;
throw error;
} catch (error) {
if (!error.data) {
error.data = { message: error.message };
}
throw error;
}
}