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
    }
  }
  