tryConnectOnce игнорировала результат runTcpLoop и всегда возвращала true, из-за чего reconnectLoop не делал паузу и переподключался заново каждые ~30 мс, заваливая сервер MSG_ERROR 'Access denied'. Теперь возвращаем !running, поэтому после разрыва/отказа выдерживается RECONNECT_DELAY_MS.