Change the async support to use 2 greenlets.

I use 2 greenlets to read and write to the socket separately, so it will be fully asynchronous.