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
TurnContext
class in thebotbuilder-core
library 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:
_emit
method to ensure that each middleware can await the result of the next middleware in the chain, including the final logic._emit
method to return the result of the logic coroutine correctly.2. Test Cases:
test_update_activity_should_apply_conversation_reference
test case to handle theResourceResponse
correctly and ensure theupdate_activity
method returns the correctResourceResponse
.