The client sends a lot of messages to the server from a single thread, over a single WCF channel.
The client sends the message with BeginMyMethod(x, b) as it does
If you are using the generated BeginXXX async-methods, these are executed on a ThreadPool thread. So although you've send the messages in a defined order, nobody guarantees you in which order the ThreadPool executes the requests.