P2 из ревью Codex на #71 (тред).
stopCapture() отменяет micTask до остановки micEngine. Колбэк отмены/ошибки может выполниться, пока eng.isRunning ещё true, и вызвать restartMicTask — тот поставит новый request и задачу уже после того, как stopCapture() их очистил. Остановка сессии оставляет живой speech-task; отложенный колбэк старой сессии может ещё и отменить/подменить задачу следующей.
Починка: гейтить рестарты явным состоянием «сессия активна» либо останавливать engine до отмены recognition-задачи.
P2 из ревью Codex на #71 (тред).
stopCapture()отменяетmicTaskдо остановкиmicEngine. Колбэк отмены/ошибки может выполниться, покаeng.isRunningещё true, и вызватьrestartMicTask— тот поставит новый request и задачу уже после того, какstopCapture()их очистил. Остановка сессии оставляет живой speech-task; отложенный колбэк старой сессии может ещё и отменить/подменить задачу следующей.Починка: гейтить рестарты явным состоянием «сессия активна» либо останавливать engine до отмены recognition-задачи.