I think we need to make sure that `subscribe` happens in the UI thread or there would be some concurrent issues. So I add `assertUiThread` here.