Я думаю, что в основном вам нужно будет создать собственную реализацию IAsyncResult, а также вести серьезный бухгалтерский учет вокруг ваших запросов.Я предполагаю, что вы захотите запустить ваши внутренние запросы параллельно, а затем подождать, пока все не будет сделано, прежде чем вернуться, верно?
Если это так, то я бы создал собственный IAsyncResult, в то время как внутреннеотслеживая каждый из IAsyncResults, связанных с каждым внутренним вызовом, затем считайте мой пользовательский IAsyncResult выполненным (что подразумевает как сигнализацию его дескриптора ожидания, так и запуск любых обратных вызовов), когда все внутренние запросы выполнены.