RPC ordering - is it really preserved?

If two clients send an RPC message Foo to the same object, the documentation seems to suggest that these both go to the server, then are sent (in the same order) to all clients, including those who sent the messages. Is this what the documentation means?

I don't seem to get that result. To me, it seems that RPCMode.All actually sends the message to self out-of-order. i.e. it effectively tells the server to pass on the message to everyone else, but short-circuits the send to itself, thereby causing different clients to receive the RPCs in different orders (always themselves first if they sent it).

I've currently worked around this by first sending a proxy message only to the server and then having the server send the real message to everyone - I of course then get the expected behaviour, but I'd rather not have to double-up all my RPC calls.

Unity3, BTW.

As I understand the documentation:

RPC calls are always guaranteed to be executed in the same order as they are sent.

It means that the RPC calls are always recieved in the same order on every client, if the RPC calls are sent out by one person.

As you observed, Unity is smart enough to "short-circuit" RPC's to self, and send it directly to the other clients. If it did it the way you expect it to, it would create a lot of "unnecessary" traffic.

Might I ask why you need the behavior you described in the first paragraph?