Вопрос не очень понятен. Причем тут асинхронные функци?
1. Допустим у вас есть функция, вычисляющая число Пи до триллиона знаков (ну в общем любая функция с очень тяжелыми вычислениями).
2. Допустим вы хотите выполнить эту функцию только когда юзер нажал на кнопку.
3. В результате вы получите то, что вызов этой функции будет вставлен в стек выполнения лишь через неопределенное время в будущем.
4. Но вот тогда когда она уже будет вставлена (после клика) вот тогда она комп и повесит, потому что сама по себе она синхронная.
Единственный способ выполнить тяжелые вычисления асинхронно - вынести их в
Web Worker