Почему .json() возвращает промис?

При использовании fetch хочу получить данные, однако при следующем использовании нашёл одну интересную вещь:

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => console.log(response.json())) // [object Promise] { ... }

Сам вопрос заключается в следующем: почему response.json() возвращает промис, а не данные из запроса? т.к. если воспользоваться подходом ниже, то всё работает как надо

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(json => console.log(json)) // данные из запроса

Ответы (1 шт):

Автор решения: Aziz Umarov

Дам кусочек отсюда

Процесс получения ответа обычно происходит в два этапа.

Во-первых, promise выполняется с объектом встроенного класса Response в качестве результата, как только сервер пришлёт заголовки ответа.

На этом этапе мы можем проверить статус HTTP-запроса и определить, выполнился ли он успешно, а также посмотреть заголовки, но пока без тела ответ

→ Ссылка