/* Page prose (es) */
"Reentrancy" = "# Reentrancia: la parte sutil\n\nAquí es donde los actores sorprenden a la gente. Un actor garantiza una tarea dentro a la vez, pero \"a la vez\" tiene un significado preciso. Siempre que un método de actor llega a un `await` y **se suspende**, *sale del actor* mientras espera. El actor ahora está libre, así que **otra tarea puede entrar**. Esto se llama **reentrancia**: el actor puede ser reingresado durante una suspensión.\n\nLa consecuencia es afilada: **cualquier valor que leas antes de un `await` puede haber cambiado para cuando reanudas.** El estado no se queda congelado a través de una suspensión.\n\nMíralo causar un error real. Esta bóveda comprueba el saldo, hace un paso asíncrono a mitad de la transacción (imagina contactar a un servicio de aprobación), y luego deduce.";
"Reentrancy-2" = "**Míralo en acción:** ambos cajeros reportan éxito, y el saldo final es **`-60`**: la cuenta está sobregirada, aunque cada retiro comprobó con cuidado que había suficiente dinero. Aquí está la secuencia:\n\n1. El cajero A entra, comprueba `100 >= 80` (pasa), luego llega a `await` y **se suspende**, liberando el actor.\n2. Con el actor libre, el cajero B entra, comprueba `100 >= 80` (¡también pasa; A todavía no ha deducido!), luego llega a `await` y se suspende también.\n3. Ambos despiertan y deducen: `100 - 80 = 20`, luego `20 - 80 = -60`.\n\nEl guard fue verdadero para ambos porque el saldo no cambió *mientras cualquiera estaba suspendido*, pero cambió *entre la comprobación y la deducción*. Ese hueco es el `await`. El comprobar-y-luego-actuar no era atómico después de todo.\n\n* callout(Pruébalo): Cambia el sleep a `.seconds(2)`; el sobregiro sigue ocurriendo. Esperar más no es la solución; cerrar el hueco a través del `await` sí.\n\n[Anterior](@previous)  |  página 4 de 7  |  [Siguiente: Protegerse contra la reentrancia](@next)";
