Гайз, такой вопрос. я правильно понимаю, что интерпретатор js в ноде вешает обработчики событий до запуска программы? иначе как объяснить что результат работы асинхронной функции gatheringLoop, становится без гонки доступен в событии asyncParser.processor.on('end' . функция asyncParser.input.push(null) генерирует событие 'end' и только потом , await функции возвращает результат в переменную itemsCounter. т.е. последовательность такая происходит событие end и по логике itemsCounter все еще должен иметь стату pending, но так не происходит и в end мне доступен уже нормальный результат. эта вся конструкция работает , как мне нужно, но я ощущаю присутсвие какой-то магии