Current solution involves “chaining” async events.
If you have a long running task you split it into multiple steps. Each step constitutes another async event.
We’re looking into more support for long-running tasks in Forge here Improving support for long-running tasks in Forge