A `withContext(NonCancellable)` block runs a suspend function after the surrounding coroutine was already cancelled. What is true about suspension points (like `delay`) inside that block?
try { work() } finally {
withContext(NonCancellable) {
delay(100) // does this throw?
cleanup()
}
}