ØMQ promises being "socket on steroids" but I used it quite a bit and it's not so beneficial.
It hides the scalability problem of having many TCP sockets without solving it (e.g. pub-sub over TCP).
It does not solve the ahead-of-line blocking issue.
It requires reading a lot of documentation and doing experiments to find out what is the right combination of " fan-out, pub-sub, task distribution, and request-reply" that you have to use.
e.g. https://zguide.zeromq.org/docs/chapter4/ https://zguide.zeromq.org/docs/chapter5/ https://zguide.zeromq.org/docs/chapter3/
Plus a lot of "magic" happening in the library involves queues that you have no control over. You get applications that hang and fill buffers instead of failing early.
I suspect this is the reason why it never became a new layer in the TCP/IP stack