Почему в объекте Response нет самого ответа?
Промис возвращаемый fetch() не ждет завершения всего запроса, он резолвится когда получены все заголовки.
На этом месте их можно обработать и решить что делать дальше, например читать json, текст или бинарные данные из тела, или вообще не обрабатывать тело и прервать запрос.
Так же можно читать тело ответа в виде потока, как уже указал в своем ответе Надим Закиров 

Второй промис из response.text() и response.json() нужен чтоб дождаться считывания всего тела ответа, притом response.json() еще и позволяет браузеру парсить json из ответа потоково прямо во время скачивания, опять же не блокируя поток js/ui.
Потому что может возникнуть необходимость читать поступающие данные сразу по мере их поступления:
https://learn.javascript.ru/fetch-progress
https://developer.mozilla.org/en-US/docs/Web/API/R...
Не ожидая завершения запроса.