Allow the BasicServer to run the listen loop off the main thread - then we can run a client and server side-by-side in integration tests.