Canister threading model

All canisters method invocations are in essence processed sequentially correct? If so, if I invoke methods m1, m2, m3 on canister A then the order of the execution is m1, m2 and then m3. Does this mean that if m2 makes an XNET call it will be some async call on which one awaits. Does this mean that m3 cannot be executed before that await completes correct?

I am basing part of this question after reading