That is correct, except that the message might not be processed "immediately" - it is put on the message queue, and the messages before it in the queue will be processed first.
As you've probably figured out already, this applies to gen_server:cast
and messages sent using !
, but not to gen_server:call
, which would cause a deadlock here.