Как запустить коллбек после асинхронных функций?
Вот это ваше называется callback hell'ом. Поэтому все таки стоить выделить время и почитать о промисах. Вот тут очень годно расписано все.
В данном случае они не очень сильно помогут, там будут такие же вложения, может быть немого более читаемо.
Я похожее делал через async/await, но там тоже надо было дождаться выполнения предыдущей команды, обработать результат и передать дальше. Тоже что-то такое получается, посмотрите вот тут с 180 строки