Я уверен, что мне здесь не хватает чего-то простого, у меня есть куча обещаний, которые нужно выполнить по порядку. В этом примере функция 4 запускается до завершения функции 3. Все функции, вызываемые здесь, возвращают обещание.
await self.function1()
.then(await function () {
self.function2()
})
.then(await function () {
return self.function3()
})
.then(await function () {
return self.function4()
})