Thanks for the link to Ranch. As this was done as a spike with people who (until that point) had never done Erlang or Elixir, it's certain that we reinvented the wheel at certain points. That being said, we didn't really know we were building a socket acceptor pool until we built it. I'll definitely take a look at ranch and see if it would make sense to replace our home-grown implementation with Ranch.