protected suspend fun withStateSuspend(block: suspend (state: S) -> Unit ) { withState { state -> viewModelScope.launch { block(state) } } }