/* Page prose (es) */
"DistributedAsyncAndThrows" = "# Las llamadas distribuidas son `async` *y* `throws`\n\nAquí está la diferencia más importante respecto a un actor local, y la que hay que grabar en la memoria.\n\nLlamar a un método de actor local es `async`: le haces `await` porque quizás tengas que esperar tu turno para el aislamiento del actor. Pero **no** lanza solo por ser una llamada de actor; una vez dentro, la llamada se ejecuta en el proceso y no puede fallar por el camino.\n\nUna llamada **distribuida** es `async` **y** `throws`, porque ahora la llamada podría cruzar una red, y las redes fallan. La conexión puede caerse, la máquina remota puede ser inalcanzable, un mensaje puede agotar su tiempo. Nada de eso puede ocultarse, así que el compilador te obliga a enfrentarlo con `try`:\n\n```swift\n// Local actor, await only:\nawait ledger.deposit(1)\n\n// Distributed actor, try await, because the wire can fail:\ntry await remoteLedger.deposit(1)\n```\n\nMira de nuevo la definición de `distributed func deposit`: su cuerpo no está marcado como `throws`, y nunca lanza por sí solo. El lanzamiento se añade *en el sitio de la llamada* por el runtime: representa un **fallo de transporte**, la posibilidad de que el mensaje nunca completara el viaje de ida y vuelta. Este es el modelo siendo honesto contigo: una llamada remota es algo fundamentalmente más frágil que una local, y el sistema de tipos no te dejará fingir lo contrario.\n\n> **Esta es la honestidad de `await` del capítulo [Fundamentos de async/await](Async%20Await%20Basics.playgroundchapter/Overview), escalada.**\n> Allí, `await` marcaba \"esto podría pausarse.\" Aquí, `try await` sobre una llamada distribuida marca \"esto podría pausarse *y* podría no completarse en absoluto.\" Las palabras clave hacen el mismo trabajo de siempre, hacer visible el costo de una llamada en el punto donde la haces.\n\n[Anterior](@previous)  |  página 5 de 9  |  [Siguiente: Argumentos Codable](@next)";
