Added old server constructor and changed the logic surrounding the acceptor. There seems to be a timing issue with the tests whereby if the acceptor's binding and listening is done during run() then the test code deadlocks (not 100%). Having the acceptor bind/listen early seems to skip the problem. As I say, this is not 100% repro when running tests and I've never seen it running examples.