After a detailed research of various asynchronous techniques such as Promises, Futures, Tasks and Reactive Extensions we came with a new paradigm that solved all our asynchronous problems very elegantly: The Streams Paradigm
It's inspired by the reactive approach, though superior in many aspects such as abstraction, abortion, resumables etc.
It's a completely rethought way of writing declarative code, making complex asynchronous operations and transactions (and probably even concurrency) a piece of cake! Nearly everything can be represented, thus abstracted away by a stream..
Requests (HTTP etc.)
the list goes on...
This way streams become a consistent protocol of asynchronous and concurrent communication between various application components ranging from the UI frontend to the networked backend.
We published the first beta release of a QML implementation with a working example aboard, be sure to check it out!