Why GenServer.call is synchronous?

@tomthestorm if you mean async with respect to the client, the client can simply do current_process = self(); GenServer.cast(pid, {:give_me_state, current_process}) and then the genserver can message the current process with its state.

If what you’re looking for is some kind of key value store that could be accessed concurrently by many processes, then that’s what an :ets table provides.