There's no FIFO queue, or anything like that.
With every ObjC call, the message name is used to do a lookup on the receiver's class to find the corresponding implementation (a C function really), and then calls that function. This is called "dynamic binding", where the function to be called is determined at runtime instead of at compile time ("static binding").
The use of dynamic binding does actually open up a world of new possibilities, but in the typical case your method just gets called as normal.