/* Page prose (es) */
"WrappingUp" = "# Resumen\n\nUna continuación es el adaptador que le permite al mundo moderno hacer `await` sobre una vieja API de callback: suspenderse en `await`, reanudar cuando el callback se dispara. Todo descansa sobre una ley, **reanudar exactamente una vez** en cada camino, y la mayoría de las conclusiones de abajo son esa única ley vista desde distintos ángulos.\n\n* Una **continuación** puentea una API de callback/finalización/delegado hacia `async`/`await`: suspenderse en `await`, reanudar cuando el callback se dispara.\n* `withCheckedContinuation` para callbacks que siempre tienen éxito; `withCheckedThrowingContinuation` (más `resume(throwing:)`) para los que pueden fallar. `resume(with:)` desenvuelve un `Result` en una línea.\n* La regla de oro: **reanudar exactamente una vez** en cada camino; traza cada rama. Cero reanudaciones → un cuelgue silencioso; dos → un fallo. Protege un callback que posiblemente se repita poniendo a `nil` la continuación almacenada tras la primera reanudación.\n* Las continuaciones **checked** atrapan ambos: interrumpen ante una doble reanudación y advierten ante una continuación fugada (nunca reanudada); no silencies esa advertencia, y prefiere checked sobre `withUnsafeContinuation` mientras aprendes.\n* Puentea un **delegado de un solo disparo** con un pequeño adaptador que reanuda en sus métodos de delegado, y mantén viva una referencia fuerte a él hasta que reanude, o un delegado `weak` puede liberarse antes de tiempo y fugar la continuación.\n* Una continuación es de una sola vez. Para callbacks que se disparan repetidamente, usa `AsyncStream` del capítulo [AsyncSequence y AsyncStream](AsyncSequence%20and%20AsyncStream.playgroundchapter/Overview).\n\n---\n\n## A continuación\n\n**[Grupos de tareas](Task%20Groups.playgroundchapter/Overview)**: ahora que una sola llamada asíncrona es fácil, ¿cómo ejecutas *muchas* de ellas a la vez y reúnes todos los resultados, de forma segura y en paralelo?\n\n[Anterior](@previous)  |  página 8 de 8";
