See #10173 for more detail and instruction to reproduce.
Seems the root cause is, for MultiTopicConsumer, when it tries to receive messages from an underlying Consumer C for a single topic partition, if C.incomingMessages (consumer's receiver queue) has message, then message will be processed by the "pulsar-client-internal" executor, if C.incomingMessages doesn't have message, then it'll queued as pending request and when message arrives it'll be picked up and process by the "pulsar-external-listener" executor, which could cause nondeterministic order even for a single partition.