Use a `FuturesUnordered` to process foreground messages

This prevents deadlocks when e.g., client A performs a request to client B and
client B performs a request to client A. If both clients stop processing further
messages until their respective request completes, they won't have a chance to
respond to the other client's request and cause a deadlock.

This arrangement ensures we will attempt to process earlier messages first, but fall
back to processing messages arrived later in the spirit of making progress.
fb2590d913Antonio Scandurra committed on 6/22/2022, 1:04:17 PMparent6eb3e72
1 file changedLine totals unavailable