Fix Middleware Chain to Allow Awaiting Final Logic Result #2213
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.
Fixes #2197
Description
Previously, the middleware chain executed each handler sequentially, but none could await the final logic result. This prevented middlewares from processing the response of the last middleware (which runs the actual logic).
This PR updates the
TurnContextclass in thebotbuilder-corelibrary to modify the middleware chain handling. The changes ensure that middleware can await the result of the "next" middleware, including the final logic.This allows for more flexible and powerful middleware handling.
Specific Changes
1. TurnContext Class:
_emitmethod to ensure that each middleware can await the result of the next middleware in the chain, including the final logic._emitmethod to return the result of the logic coroutine correctly.2. Test Cases:
test_update_activity_should_apply_conversation_referencetest case to handle theResourceResponsecorrectly and ensure theupdate_activitymethod returns the correctResourceResponse.