From d5b70ac4aad11d8b286a2058709d5b7833cd3075 Mon Sep 17 00:00:00 2001 From: min Date: Tue, 9 Jun 2026 10:20:27 +0300 Subject: [PATCH] =?UTF-8?q?debug(lua):=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=87=D1=82=D0=BE=20=D0=BC=D1=8B=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=20=D0=B4=D0=BE=20drain=20=D0=B8?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=BA=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BB=D0=BE=D0=B2=D0=B8=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сейчас связь Touched → handler рвётся где-то. Хочу видеть: 1. Срабатывает ли drain цикл (queue.length > 0) 2. Что именно catch съедает --- src/editor/engine/lua/RobloxShim.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/editor/engine/lua/RobloxShim.js b/src/editor/engine/lua/RobloxShim.js index 3e04ba6..97c498f 100644 --- a/src/editor/engine/lua/RobloxShim.js +++ b/src/editor/engine/lua/RobloxShim.js @@ -1855,6 +1855,8 @@ export function registerRobloxShim(lua, opts) { // Запускаем каждый в своей coroutine — wait() внутри безопасен. if (_pendingHandlerQueue.length > 0) { const queue = _pendingHandlerQueue.splice(0, _pendingHandlerQueue.length); + // eslint-disable-next-line no-console + console.warn(`[handler-drain] draining ${queue.length} handlers`); for (const h of queue) { try { const a = h.args || []; @@ -1872,8 +1874,8 @@ export function registerRobloxShim(lua, opts) { result.catch(() => {}); } } catch (e) { - // Тихо — handler-error это норма (yield-across-C-boundary, - // wasmoon promise-detection и т.п.) + // eslint-disable-next-line no-console + console.warn('[handler-drain-catch]', e?.message || e); } } }