response.json()
не является синхронным. Он возвращает обещание, пока система выполняет и анализирует JSON.
Резонанс, по которому работает ваш второй пример, заключается в том, что когда вы возвращаете обещание в рамках обещания, внешнее обещание ожидает разрешения внутреннего обещания.