I take a different (simpilier) approach, that may or may not work for you. Instead of trying to combine the results, I let them come in individually, and then just append them to a results block. That way if one result comes back quickly it is displayed immediately, and if a query takes a long time the results just show up whenever its done.