Skip to content

Make handlers Deferrable-aware#181

Open
singpolyma wants to merge 1 commit into
adhearsion:developfrom
singpolyma:defer-aware
Open

Make handlers Deferrable-aware#181
singpolyma wants to merge 1 commit into
adhearsion:developfrom
singpolyma:defer-aware

Conversation

@singpolyma

Copy link
Copy Markdown
Contributor

If a handler returns an EM::Deferrable, wait for the EM result to be ready
before considering the handler complete, raising and error result as an
exception in the current context just like a non-async handler would have done.
This allows async filters/handlers to run in order.

To be able to sync, handle_data is wrapped in a Fiber. To aid in testing or
other cases that want to wait until the whole process is done, handle_data
returns an EM::Deferrable that will signal the success or failure of the whole
process (for both the sync and async cases). This can be safely ignored by most
callers.

@bklang

bklang commented Nov 10, 2022

Copy link
Copy Markdown
Member

Looks like this has a merge conflict now. Would you take a look and resolve as necessary?

I'll be honest that I haven't reviewed this too closely, but it looks backward compatible and makes sense given your other work in this space. 👍

If a handler returns an EM::Deferrable, wait for the EM result to be ready
before considering the handler complete, raising an error result as an
exception in the current context just like a non-async handler would have done.
This allows async filters/handlers to run in order.

To be able to sync, handle_data is wrapped in a Fiber.  To aid in testing or
other cases that want to wait until the whole process is done, handle_data
returns an EM::Deferrable that will signal the success or failure of the whole
process (for both the sync and async cases).  This can be safely ignored by most
callers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants