11ty/eleventy-fetch

Improve error handling by including response as the cause

BigBlueHat opened this issue · 2 comments

First, thank you for building eleventy-fetch! It has been great for the GET + cache pattern that's so common in static site building.

However, dealing with error responses continues to be painful since eleventy-fetch only returns a prose message:

throw new Error(`Bad response for ${this.displayUrl} (${response.status}): ${response.statusText}`)

Could that line be changed to the following?

throw new Error(`Bad response for ${this.displayUrl} (${response.status}): ${response.statusText}`, { cause: response })

That would then provide the whole failed response object for further processing. It would help write much more defensive code when 429's, 401's, etc. are found while collecting data.

Thanks!
🎩

oooh I did merge #21 for this but cause looks fancier!

I would note that cause is a Node 16.9+ thing and will only be available in those versions. This package will continue to support Node 14+ in v4.0.0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause