- safe callbacks, ISocketContext interface is used everywhere internally
- sync emit
- error + cleanup on disconnect