Подождите, прежде чем дать какой-то ответ/решение к задачи - нужно понять суть проблемы.
Прежде всего давайте разбираться с проблематикой.
Вам нужно, чтобы по событию вызывалась функция, в которой будут в определенном порядке вызываться три остальные? Причем этих остальных функций может быть N-ое количество и вызываться они должны в строгом порядке и только друг за дружкой?
Или Вам нужно показывать модальные окна, после завершения обработки каждого из которых будет вызываться следующее?
Потому что это две совершенно разные задачи и совершенно не обязательно придумывать что-то с промисами для того, чтобы вызывать друг за дружкой модальные окна.
Ну есть у Вас N-массивов, в каждом лежит сколько-то функций. В какой-то момент Вам нужно вызывать из каждого массива, по одной функции, по очереди, причем одну после другой - ну так это называется стек. Кладёте в какой-то стек указатели на объекты функций при вызове вашей основной, а потом по событию из модалок шифтите( вытаскиваете из начала ) по одной и выполняете.
Вам можно разделить отрисовку модалок или просто сделать функцию, которая будет извлекать из стека следующую и вызывать.
Вот пример с комментариями.
Но сразу хочу сказать, что это просто один из вариантов решения. Всё это конечно же можно сделать на промисах.
Пример реализации, которую я показал плоха хотя бы тем, что есть глобальные объекты, что всегда нежелательно.