There's was race between waitFor() and collect() where
collect() could close the msgCollector before waitFor got past
that check. In that case waitFor() wouldn't get the actual error it
should return to the caller.
We now send the error on the done channel so later call to waitFor can
still receive it.
There's was race between waitFor() and collect() where collect() could close the msgCollector before waitFor got past that check. In that case waitFor() wouldn't get the actual error it should return to the caller.
We now send the error on the done channel so later call to waitFor can still receive it.
Example failure: https://github.com/psanford/wormhole-william/runs/2103326907?