Это зависит от asynFunc()
Как только промис в ней выполнится с не удовлетворяющим условию результатом, так и закончится.
Если asynFunc при одном и том же аргументе всегда возвращает одно и тоже значение - никогда не закончится.
Подразумевается, что в asyncFunc длина text постоянно уменьшается и рано или поздно rec будет вызвано последний раз - нужно отловить последний вызов в коде
sergmit, дело в том, что в функцию rec все время передается один и тот же аргумент - text, переданный при первом вызове. Поэтому, если даже в asyncFunc его длина уменьшается, то в следующем рекурсивном вызове будет передан опять тот же text, что и в предыдущем, с изначальной длиной.
могу только предположить, что нужно сделать так, если asyncFunc возвращает промис с уменьшенным text: