Safe Socket Lifecycles in Completion-based Asynchronous I/O Systems : A Communicating Finite-State Machine Approach to Socket Lifetime Safety | Synapse