I found this a really interesting read, but this stuck out because it doesn't jive with my mental model of gen_server.
gen_server is fully serialized. Even the code underpinning it is not concurrent.
Now I guess gen_server does expose some top level functions to simplify sending/receiving a message into the process, but the process itself is serial.
And this is part of the genius of gen_server to me. You don't need to think about your state concurrently because it processes a single message at a time. Your system executes concurrently, but the individual components do not.
Maybe that is what the post means and I misinterpreted it.