Here, we use withContext() to switch to our own CoroutineContext.
Now, even if the caller of these repository functions (say, a ViewModel) cancels the coroutine that is executing refresh() or clear(), the nested coroutine that is doing the work (DAO calls of a Room database in this case) will continue to completion.