When a project fails using --fail-fast mode, other projects that are currently running in parallel are not finished before the "session finished" event is sent. This leads to issues for extensions that rely on the documented order of events, which says that "session finished" is only sent "after all projects have been finished/skipped".
In our case, we close a service on "session finished", and that service is needed to execute goals. The goals that were running in parallel at that time then fail, saying that our service was closed, giving our users the impression that there is a bug in our code.
The relevant line is here. Instead of using `poll`, which simply returns when the parallel projects aren't finished yet, the code should shut down the executor and wait for it to complete the outstanding parallel work.