This was implemented in the portal-centered way of doing things, because a search would return the number of records available and, based on that, the dowload service would decide to create the download directly or launch the asynchronous service. However, calling the download API doesn't precalculate this value and, therefore, all downloads are performed asynchronously.
This feature requires having a good, greatly optimized count service (#3), since it would involve calling such a service first to calculate the records to download and then call the download service itself based on these results.