
withTimeout no cancela Thread.sleep(): la trampa de la cancelación cooperativa en Kotlin
Si metes una llamada bloqueante como Thread.sleep() dentro de withContext(Dispatchers.IO), withTimeout() no la cancela aunque salte el timeout. Por qué pasa y cómo arreglarlo con runInterruptible.