Асинхронные функции.
Вместо
something().then(() => {
something2().then(() => {
})
})
Пишете (внутри асинхронной функции)
await something();
await something2();
await работает с промисами и любыми thenable объектами (теми, у которых есть метод then).
И все это можно обернуть в try ... catch