23 lines
555 B
JavaScript
23 lines
555 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
|
|
}
|
|
|
|
const error = new Error(response.statusText)
|
|
error.response = response
|
|
error.data = data
|
|
throw error
|
|
} catch (error) {
|
|
if (!error.data) {
|
|
error.data = { message: error.message }
|
|
}
|
|
throw error
|
|
}
|
|
}
|