feat: socket.disconnect

Closes #45