Problem:
Currently, OutSystems 11 has been released with the support of the creation of Services (aka Microservices). Then you can split our application to multiple processes as Microservices. These services are communicating through the network and sometimes modern architectural designs it is important to combine results from multiple sources.
Let’s look following simple example with 12 REST calls:

In this example, we have 12 REST calls ( GetRest 1 - 12 ). All of these rest calls have same structure inputs, but and they are producing a similar result from different systems. All of these results are collected together to list and then this list is returned.

This creates above problem, where all the remote calls are taking time and next REST call to be able to start we have to wait until earlier one has been completed.
How to solve that:

Above, the remote (REST) calls are executed as non-blocking way. Here the REST call can started without to wait that earlier call has been completed. We will block the operation only when we need to result. Example “GetRest12“ is blocked at “WAIT 12”, but same time REST 11 and REST 10 are also complete so there are not need to block for “WAIT 11” or “WAIT 10”. Some of the calls can be longer, like “WAIT 9” and “WAIT 4”, but those are only extending execution time as much as they longer for earlier ones.
This feature should be available for all IO operations, like REST / SOAP / SAP and Database queries and also OutSystems 11 ServiceActions as those are running on separate processes. Underlying API should be also provided for also custom extensions made with Integration Studio.