/* Page prose (es) */
"WhereBugsHide" = "# Cuenta los lugares donde puede esconderse un error\n\nEse único resultado del camino feliz esconde muchas formas de tener mala suerte. Recorre el código y cuéntalas:\n\n* **El anidamiento en sí.**  \nTres pasos, tres niveles de sangría, y la lógica de verdad (\"encuadernar el cuadernillo\") queda más a la derecha, la más difícil de encontrar. Esta es la **pirámide de la perdición**: una estructura de llamadas que crece hacia los lados con cada paso dependiente.\n* **Tres caminos de error separados.**  \nCada `.failure` tiene que acordarse de llamar a `completion(.failure(error))`. Omite uno y ese fallo desaparece en silencio; la finalización de quien llama simplemente nunca se llama.\n* **La finalización fácil de omitir.**  \nNo hay ninguna regla del compilador que diga \"debes llamar a `completion` en todos los caminos.\" Añade una cuarta rama, olvida el callback, y la página se cuelga para siempre sin error.\n* **La captura de `self`.**  \nComo un handler sobrevive a la función que lo inició, capturar `self` de forma fuerte puede mantener vivo el `PrintShop` más tiempo del previsto. Escribimos `[weak self]`, pero *acordarse* de hacerlo, y hacerlo bien, es manual.\n* **El salto al hilo principal.**  \n`bindBooklet` reporta en una cola en segundo plano. Añadimos `DispatchQueue.main.async` para que una actualización de UI fuera segura. Olvídalo, y obtienes un error que solo se porta mal *a veces*, el peor tipo de rastrear.\n\nNinguno de estos es exótico. Cada uno es un martes normal en una base de código basada en clausuras. El modelo no está *mal*; solo hace que la corrección sea *tu* responsabilidad en cada costura.\n\n[Anterior](@previous)  |  página 4 de 6  |  [Siguiente: El mismo trabajo, reescrito](@next)";
