It can happen quite often that there is a need to execute two asynchronous tasks and wait for the result of both of them before the next step can be taken.
For example, consider downloading data for two stocks to compare their prices. The fetches for both of them can be executed independently, so there is no need to wait for one of them to complete before starting another, but how do we do that?