Found during work on on fix for #2653
The Connection.Start method in the .NET client initializes instance state variables, e.g. _startTcs, before checking the state of the connection.
This means that if you call Start().Wait() twice in a row, the second call to Start will blast away the state of the connection, resulting in strange errors (as the internal state is now essentially in a corrupt state).
Port from #2675
Ported .NET client fixes from 2.x
ran test "ConnectionFunctionsCorrectlyAfterCallingStartMutlipleTimes"