/* Page prose (es) */
"WrappingUp" = "# Resumen\n\nEl sentido de `async`/`await` es código que espera sin bloquear: se lee de arriba abajo mientras el hilo queda libre para otro trabajo. La única idea a la que aferrarse es que `await` marca un lugar donde tu función puede *pausarse y devolver su hilo*, no un lugar donde se congela. Todo lo de abajo se sigue de captar bien esa imagen.\n\n* Una función **`async`** puede pausarse y reanudarse; la llamas con **`await`**, un *posible* punto de suspensión que libera el hilo en lugar de congelarlo.\n* Una **tarea no es un hilo.** Swift multiplexa muchas tareas sobre un pequeño grupo cooperativo (~un hilo por núcleo); una tarea suspendida devuelve su hilo y puede reanudarse en uno distinto. Bloquear un hilo del grupo (p. ej. `Thread.sleep`) es el error clásico: suspende, no bloquees.\n* Trampa: no esperes trabajo independiente una tras otra; dos `await` secuenciales apilan sus esperas (el latte accidental de 2 segundos). Usa **`async let`** para iniciar trabajo independiente a la vez, de modo que las esperas se solapen y el tiempo total encoja.\n* Trampa: un `async let` que nunca `await` se cancela al final del ámbito y su resultado se descarta. `async let` es una *promesa de esperar*: cúmplela.\n* Solo puedes hacer `await` dentro de un contexto asíncrono; usa **`Task { }`** para cruzar desde código síncrono (`await` en el nivel superior no compila).\n* **`async throws` + `try await`** devuelve los errores a un simple `do-try-catch`, mucho más limpio que la fontanería de errores con completion handlers. Olvidar `try` es un error de compilación, no un fallo silencioso.\n\n---\n\n## A continuación\n\n[Tareas y cancelación](Tasks%20and%20Cancellation.playgroundchapter/Overview): qué es realmente una `Task`, cómo las tareas forman un árbol, y cómo detener el trabajo que ya no necesitas.\n\n[Anterior](@previous)  |  página 8 de 8";
