Fix blocking busy-wait in typing handler using FIFO async queue #1114
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix blocking busy-wait in typing handler using FIFO async queue
Acceptance Criteria fulfillment
console.errorcallsFixes #1113
Overview
This PR removes a critical performance bug where a synchronous
whileloop was used to lock the thread while handling typing events.Because JavaScript is single-threaded, this could block the event loop and cause the host application or browser to freeze when multiple typing events occurred in quick succession.
Changes
File:
packages/api/src/EmbeddedChatApi.tsFix:
while (typingHandlerLock) {}with a FIFO async queue implemented via Promise chaining (this.typingChain)Robustness:
try / catchblock inside the queue consumer to ensure the queue remains functional even if a typing callback throwsconsole.errorcalls to avoid noisy production logs while preserving internal state consistencyTests:
Video / Screenshots
N/A (internal logic change; no UI modifications)
PR Test Details
This change replaces a blocking lock with an async FIFO queue to prevent UI freezes while preserving typing event ordering.