Refactor reactive socket implementation so that synchronous read, write, accept and connect operations don't modify data associated with the socket.