On linux, if the listen socket is closed and we get an error from select, we just let the thread driving the Listener fall out of the loop in Listener::initAndListen:
But, on Windows, if we find that the listening socket has closed, we fassertFailed.
This means that on Windows, it is impossible to get the thread out of initAndListen without terminating the process via fassertFailed without first calling shutdown().
This makes it hard to write reasonable tests that need to use a listener, like scoped_db_conn_test. We can't call shutdown or shutdownNoTerminate because after that happens, we are always in a shutdown state and can't start a new listener.
The Windows version of initAndListen should work more like the non-windows version: if WSAEventSelect fails, and we are not in shutdown, log an error and let the thread return. If we are in shutdown, just return.