каждая новая функция будет ожидать завершения рекурсивно вызванной функции, пока последняя не вернёт [], следующая будет пушить в [], следующая в [что предыдущая запушила], и так далее.
call stack recursion - есть статья с картиночками и видео, на английском