Нужен ли await перед response.json() и как fetch реализует timeout для своего промиса?
Немного дополню ответ molekulyarniy:
fetch возвращает промис, который резолвится с объектом Response когда получены заголовки ответа
Вы можете читать ответ потоково через Stream API или сразу целиком, через спец методы, каждый из которых возвращает промис, который зарезолвится с результатом, кода тело будет прочитано в соответствующем методу формате.
Потому что этот метод возвращает Promise. Так он реализован.