Use Async.race in serverCLI start-all to fix initialisation bug
This commit uses the race
function from the async library to fix a bug
where exceptions raised from the server async wouldn't be caught by the
top-level code.
The bug was stemming from the fact that runAllWorkers
is blocking,
despite its usage of forConcurrently_
. Therefore we were never
actually running the wait
function below, but rather we were hanging
waiting on the result of the first function.
As a result the server could die but the workers could keep the main thread alive, causing the bug we just saw as part of #463.
@cgenie The usage of forConcurrently
& co can be a bit subtle, but as the documentation states it means that it will run the inner action concurrently, discarding the results, but that still implies that the inner actions have to terminate!.
That wasn't the case for runAllWorkers
, which is still a blocking operation. Probably worth a comment, which I will add in a follow-up commit shortly.