У вас работает сервер Node.js, принимающий подключения извне (через Socket.io, но это не имеет значения). Каждый раз, когда устанавливается соединение, вы создаете структуру «Instance», а затем копируете экземпляр в глобальный массив Instances. Эта часть асинхронна.
Каждые три экземпляра созданы, вы передадите их всем другому процессу и пометите их как «продвинутые» (или удалите их, или что-то еще, вы поняли).
Проблема в том, что все пройдет хорошо, если соединения будут проходить в дискретные промежутки времени, скажем, 100 мс один за другим. Если они прибывают почти в одно и то же время, вполне возможно, что в результате вы получите три знаменитых экземпляра в буфере, хотя на самом деле было получено гораздо больше, поскольку создание и буферизация объектов экземпляров асинхронна.
Можете ли вы придумать, как решить эту проблему?
(я бы буферизовал экземпляры в Redis, а не в памяти, но в этом случае у меня возникла бы серьезная проблема с сериализацией. Каждый объект экземпляра довольно богат методами)