Примерно так:
- Считываем файл прокси в список
- Делаем цикл (в данном случае он равен количеству прокси [[LIST_RPOXY_GOOD]].length).
- В цикле получаем прокси по индексу (в данном случае кодом: VAR_PROXY_GOOD = VAR_LIST_PROXY_GOOD[VAR_CYCLE_INDEX]).
- Вызываем нужную асинхронную функцию.

В настройках функции указываем параметр (в данном случае PROXY_GOOD)

В настройках асинхронной функции тоже указываем тот же параметр (PROXY_GOOD) и устанавливаем максимальное количество потоков (в данном случае 5). Переменная ASYNC_USERRREGISTRATION_IDS - это лист, где хранятся ID запущенных потоков.

Теперь в теле асинхронной функции просто получаем параметр, который указывали (PROXY_GOOD). И теперь в каждом потоке будет свой прокси.

Ну и в конце просто вызываем действие ждать окончание потоков.

Лень было под пример проекта переделывать, поэтому картинками объяснил.
P.s. В асинхронных функциях видны только переданные параметры, глобальные переменные и ресурсы. Асинхроные функции в коде выполняются почти мгновенно, не дожидаясь результата. Поэтому важно "Ждать завершение ассинхронных функций", если потом по плану использовать их результаты. И если потом в основном потоке, после завершения асинхронных функций, нужно получить переменную, которая была объявлена в асинхронной функции нужно либо сделать ее глобальной, либо передать в ресурс, либо в настройках ставить "Есть возвращаемое значение: да" и там его как-то настраивать.