/* Page prose (es) */
"Overview" = "# Fundamentos de async/await\n\nDe vuelta en la cafetería, imagina pedir un latte y que te entreguen un ticket de reclamo: \"gritaremos tu nombre cuando esté listo.\" Eso es un **completion handler**: el estilo de callbacks del capítulo [Por qué la concurrencia moderna](Why%20Modern%20Concurrency.playgroundchapter/Overview). Funciona, pero el código que espera el grito se enreda: clausuras anidadas, manejo de errores atornillado al costado, y ninguna forma de simplemente leer el pedido de arriba abajo. Este capítulo presenta `async`/`await`, que te deja escribir código de espera que se lee como una receta común, una línea tras otra, sin *congelar* al barista.\n\n---\n\n## Qué aprenderás\n\n* Cómo **definir** una función `async` y **llamarla** con `await`.\n* Qué significa `await` de verdad: un **punto de suspensión**, no un bloqueo.\n* Por qué una tarea **no** es un hilo, y cómo unos pocos hilos ejecutan miles de tareas.\n* Cómo alcanzar código asíncrono desde código síncrono común con `Task { }`.\n* Cómo `async throws` + `try await` devuelve el manejo de errores a un simple `do-try-catch`.\n* Cómo ejecutar trabajo independiente **concurrentemente** con `async let`, y ver encogerse el tiempo total.\n\nPasa a la página siguiente y define tu primera función `async`.\n\npágina 1 de 8  |  [Siguiente](@next)";
