Make the abstraction layer as minimal as possible
It looks like my socket event loop library had a fundamental design problem:
It wasn’t just a minimal abstraction over the different socket APIs
It also handles dispatching of events to sockets and timers and then we run into a lot of lifetime issues
Let us apply separation of concerns to make this library into the minimal abstraction it should be.