Make the controllers sync and you won't need this. Or you could keep them async and write a function that waits for the next event on a stream and wait on the individual streams.