Verwirrend dabei ist, dass (ohne zusätzliche Massnahmen in deinem Code) fetch() trotzdem versucht, die Antwort zu lesen. Weil die Antwort nicht im JSON-Format ist, wird der der abgefangene Error lauten:
SyntaxError: Unexpected token '<', "<!DOCTYPE "... is not valid JSON (Antwort ist eine klassische 404-Seite), oder:
SyntaxError: Unexpected end of JSON input (Antwort ist nur eine HTTP-Meldung ohne body)

Bildquelle: dev.to/bisrategebriel/http-status-codes-101-6jh
| Zahl | Ursprung/Grund | Was bedeutet das für mich als Entwickler? |
|---|---|---|
| 1xx | Die Bearbeitung der Anfrage ist im Gang. | Der Server vertröstet dich mit einer provisorischen Antwort |
| 2xx | Erfolg | Du kannst mit dem Verarbeiten der Antwort vom Server loslegen |
| 3xx | Die Anfrage wurde umgeleitet | Meistens hat das für dich als Entwickler:in keine Konsequenzen, ausser es wird zu viel umgeleitet. |
| 4xx | Client-Fehler | Du als Entwickler hast etwas falsch gemacht. In den meisten Fällen liegt das wohl daran: Die URL oder der Pfad stimmt nicht. Andere Ursachen können grundsätzliche Fehler oder nicht erlaubte Methoden in der Anfrage sein. |
| 5xx | Server-Fehler | Sehr wahrscheinlich liegt die Schuld dafür beim Provider (Überlastung des Servers), ausser dein Script in der Ressource hat den Server in die Knie gezwungen. |
Wikipedia: HTTP-Statuscode