💡

ky(軽量 fetch API ラッパー)における、ネットワークエラーとタイムアウトの扱い

2025/03/07に公開

ky とは:薄い fetch API ラッパーである。

投げられるエラーの型、メッセージ

_ ネットワークエラー タイムアウト
エラーの型 TypeError TimeoutError [1]
エラーメッセージ Failed to fetch Request timed out: GET {url}
  • ネットワークエラーのメッセージが曖昧で分かりづらいことに注意。
  • ネットワークエラーを区別したい場合は axios を使うべし。( AxiosError#code === 'ERR_NETWORK' で識別できる)

リトライ

ネットワークエラー タイムアウト

タイムアウト時はリトライされない。

呼ばれる Hooks

_ ネットワークエラー タイムアウト 備考
beforeRequest
beforeError これは Issue になっている。 Pass TimeoutErrors to beforeError hooks · Issue #508 · sindresorhus/ky
beforeRetry 上述のとおり、タイムアウト時にはリトライされないため、beforeRetry も呼ばれない。
afterResponse afterResponse はサーバーから何らかのレスポンスが返ってきた場合のみ呼ばれるため、このケースでは呼ばれない。
脚注
  1. ky が独自に定義しているエラー型 ↩︎

Discussion