> ## Documentation Index
> Fetch the complete documentation index at: https://acme-c84a37e5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# run

> Ejecuta una operación asíncrona y devuelve un resultado seguro

## Firma

`run<T>(fn, options?): Promise<RunResult<T>>`

## Opciones clave

* Normalización y transformación: `toError`, `mapError`
* Callbacks: `onError`, `onSuccess`, `onFinally`, `onRetry`, `onAbort`
* Control: `ignoreAbort`, `signal`, `timeout`
* Reintentos: `retries`, `retryDelay`, `shouldRetry`, `jitter`, `backoffStrategy`, `maxDelay`
* Observabilidad: `logger`
* Limpieza: `cleanup`
* Circuito: `circuitBreaker`

## Ejemplo básico

```typescript theme={null}
import { run } from "tryo";

const r = await run(() => fetch("/api").then((r) => r.json()));
```

## Abort y timeout

```typescript theme={null}
const controller = new AbortController();
const r = await run(() => fetch("/api", { signal: controller.signal }), {
  ignoreAbort: true,
  timeout: 1000,
  onAbort: (s) => console.log("aborted"),
});
```

## Reintentos con backoff y jitter

```typescript theme={null}
const r = await run(() => fetch("/api"), {
  retries: 4,
  retryDelay: 300,
  backoffStrategy: "exponential",
  jitter: { ratio: 0.5, mode: "full" },
});
```

## Circuit breaker por llamada

```typescript theme={null}
const r = await run(() => fetch("/api"), {
  circuitBreaker: { failureThreshold: 2, resetTimeout: 1000, halfOpenRequests: 1 },
});
```
