Based in the following example:

The Customer sends a "PlaceOrder" command, which is handled by the "PlaceOrderCommandHandler", which mutates the OrderAggregate, which throws the "OrderCreated" Event, which is handled with a Process Manager (aka Saga), which talks with others aggregates, and finally returns the "OrderConfirmed" Event to the Customer.
In a websocket/socket application it's easy, the customer just fire the PlaceOrder command and waits until "something happens" (an OrderConfirmedEvent, or an OrderCannotBeConfirmedEvent, or whatever).
But, my question is: how to deal with it in a typical http application (without websockets)?
The world is full of synchronous requirements, for example, imagine a "spin to win" service, where you spin the wheel and the backend must determine the result.
The client should be stuck until the backend gives to it the response. You cannot fake the result in the client and continue guessing that the backend would determine your exactly result. You should wait for it.
I imagined some "possible" approaches:
1. Synchronous layer over the Command Handlers:
The http controller which manages the command handling (creating and dealing it) would wait until the process manager finishes his work, and then the controller would return the response back to the consumer based on X domain event.
2. Send the command as fire and forget and do polling:
Just send the command as a http request and return a 202 Accepted response (the request has been accepted but isn't completed yet).
And then, do polling to the backend looking for the result:
- request: spin the wheel | response: job id: 123456789
- request: get spin the wheel result (job id: 123456789) | response: not completed yet
- request: get spin the wheel result (job id: 123456789) | response: not completed yet (again)
- request: get spin the wheel result (job id: 123456789) | response: not completed yet (again)
- request: get spin the wheel result (job id: 123456789) | response: you won a TV!
3. End point to read events and do polling:
Similar to the last mentioned, send a fire and forget command, and having an endpoint which allows the client to read the produced "backend events" (based on some Round Robin Database, storing last X events of the user)
But may be some problems with sensible events...
What do you think? Is possible to fit a CQRS application in the real http world where the flows require a real response (result of commands) to continue?