переделал через рекурсию. необходимо доработать ассинхронность вызовов