Hmm, this code you provided will force Dispatcher.Main.immediate (implementation of viewModelScope) which is kinda the same as doing just flow.asLiveData(). But the interesting thing is this part of the code inside CoroutinesRoom class (screenshot below), which shows that ‘observing’ db changes is done on specific db dispatcher, while only the emitting part will be done on caller’s context. Since this isn’t the db operation per-se but rather just the observing/emitting, i’m not quite sure if context should be something specific like IO 🤔