First off, any tasks spawned by SpawnIterator from an exclusive event handler are spawned as concurrent tasks.
Second, while as far as I know no other event handler (exclusive or concurrent) can run when an exclusive handler is running, it is possible for an exclusive handler to preempt a concurrent task, which is suspended until the exclusive handler is finished. (I had assumed naively that exclusive handlers are entirely exclusive- any concurrent handlers must complete before the exclusive handler can run).
The gotcha is that if a concurrent handler is performing some long computation based on the service state, the state may change while it is running. Maybe this should be obvious, but my mental model was that if you use only observer patterns in your concurrent handlers, and update state only in exclusive handlers, then it would be safe to assume that state is immutable while a concurrent handler is running.