In synchronous mode, the process connect command and its aliases should wait for the stop event before claiming the command is complete. Currently, the stop event is always handled asynchronously by the debugger. The implementation takes the same approach as Process::ResumeSynchronous which hijacks the event and handles it on the current thread. Similarly, after this patch, the stop event is part of the command return object, which is the property used by the test case.
Most of the discussion for this patch took place in D83446
Even though this is a private method it's still worth documenting the fact that you are switching off of "stream != nullptr" to determine sync vrs. async attach. That's not obvious.