simple asynchronous socket I/O with Python coroutines