Yes, exactly. These are different events that can trigger actions needed to be taken by the consumer. However, the events need to be processed in serial (rather they just can't alter consumer state at the same time). I just thought alternatively I could put a mutex on the consumer code instead. I just thought Kotlin is usually able to be expressed more elegantly than that though.