`gen_server` is an abstraction over the a client sending a `request` that a server services to produce a `response` to be sent to the client.
The `gen_server` implementation takes care of things like timeouts, servers terminating before a response is produced as well as maintaining the server state.
The `gen_server` implementation takes care of things like timeouts, servers terminating before a response is produced as well as maintaining the server state.
You can read more here at [1], [2] and [3].
[1]: https://learnyousomeerlang.com/clients-and-servers#callback-...
[2]: https://www.erlang.org/doc/system/gen_server_concepts
[3]: https://www.erlang.org/doc/apps/stdlib/gen_server.html