This idea of modeling multiple concurrent things in the world (TCP connections) with multiple concurrent and isolated things in your application is very popular.<p>That is often the point of Erlang (and now Elixir) and other Actor based frameworks -- starting to think in terms of actors and mailboxes to model your problem.<p>Now it doesn't have to be about Erlang. You can spawn OS processes, or threads, or processes on different machines and use RabbitQM or 0MQ. Erlang and Elixir gets you the ability to spawn millions of isolated processes. Typically this not possible if using regular OS processes or even threads. It is possible with goroutines in Go for example, but those are not isolated.<p>If anything just being aware of this mode of developing when today callback-based concurrency and async/deferred/promise is talked about is important. I think it is a better way to model a problem in most cases.