Best practice for listing matches in all regions?

In order to list matches in any region, I'm currently manually looping through regions one by one and collecting all the returned matches into a complete list. The only way I've gotten it to work is (pseudo-code):
foreach (region)
     disconnect matchmaker
     wait until matchmaker state is ClientState.Disconnected
     matchmaker ConnectToRegionMaster(region)
     wait until matchmaker IsConnectedAndReady
     fetch the matches
A few problems:

1. I can't just MatchMakerClient().ConnectToRegionMaster(region) without MatchMakerClient().Disconnect() first. Is there any way to keep the matchmaker client alive but just connect to a new region? I'm trying to minimize the delay in fetching all the matches here. There is too much downtime here waiting for the disconnected state, then connecting to a new region.

2. Is there a better/faster way to do this?