Emacs has asynchronous IO support which is more than sufficient for networking. It is up to the relevant mode or application that runs on top of Emacs to take advantage of it and not all of them do (for example, Gnus).
There are also various multi-processing configurations for even more flexibility: multiple Emacs processes that can coordinate, Emacs modules over a C API which can create native threads outside of Emacs and so on. What Emacs lacks is parallelism inside a single Emacs process, which is arguably not needed and would be a net negative from a safety, ease of development and debugging point of view.
Look at the recently introduced canvas API (https://monadicsheep.org/blog/an-introduction-to-canvas-in-e...) for some examples of what's possible via that flexibility.
Lem is nice but nowhere near as nice as modern Emacs (and probably never will be). Emacs Lisp isn't Common Lisp but has evolved significantly and the remaining differences don't really matter in practice because Emacs momentum, massive user base and ecosystem are a tremendous advantage.