Sinceramente non ho capito cosa deve fare questo web service
Il WebMethod effettua la ricerca di informazioni sul db locale e mette i ris di tale ricerca in un dataset, poi inoltra la richiesta ai suoi vicini. I quali, a loro volta, effettuano la ricerca sui loro db locali mettendo i ris della ricerca sempre nel dataset MyQuery. Quando il valore timeToLiveReq diventa negativo, la richiesta non viene inoltrata ulteriormente e il metodo restituisce MyQuery al chiamante che colleziona la risp dal nodo chiamato con quanto già presente sul suo dataset MyQuey con il metodo Merge().

e non ho capito perchè utilizzi chiamate asincrone dentro all'webservice
Utilizzo le chiamate asincrone perchè in questo modo mando tutte le richieste contemporaneamente ai miei vicini, alla fine attendo tutte le risp.