Обещания - это не финальное решение для обеспечения удобной работы с асинхронщиной, а лишь шаг на пути к нему. Сейчас идет разработка фичи async functions, которая обеспечит асинхронную работу без увеличения стека, с нормальным синтаксисом и перехватом ошибок.
Выглядит так:
async function loadUser(id) {
let user;
try {
let response = await fetch(`/api/users/${id}`);
user = response.body;
} catch (error) {
console.error(error);
}
return user;
}
Новейший текст спецификации -
http://tc39.github.io/ecmascript-asyncawait/.
Это то?