Following the context of the definitions
Motoko abstracts the complexity of the Internet Computer with a well known, higher-level abstraction: the actor model. Each canister is represented as a typed actor.
…its messages are processed one-at-a-time, even when issued in parallel by concurrent actors.
So far so good. And then I read the following:
Between suspension and resumption around the
await, the state of the enclosing actor may change due to concurrent processing of other incoming actor messages.
It seems as a contradiction and the violation of one the fundamental principles of Actor Model namely the definition of an actor behaviour transition - actor does not receive the next communication until the current accepted communication is processed and replacement behaviour is determined.
If the actor’s shared methods represent a list of accepted actor’s communications and its corresponding handlers, handling any specific communication (executing a shared method) should be atomic, deterministic, and free of concurrency as far as the actor’s state is concerned.
What do I miss?