[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Task](https://evolu.dev/docs/api-reference/common/Task) › Deferred

Defined in: [packages/common/src/Task.ts:2202](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L2202)

A value that can be resolved later.

Similar to
[Promise.withResolvers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers),
but integrated with [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task) and [Run](https://evolu.dev/docs/api-reference/common/Task/interfaces/Run) for cancellation support.

Use for bridging callback-based APIs or coordinating between Tasks.

Disposing aborts all waiting Tasks with an [AbortError](https://evolu.dev/docs/api-reference/common/Task/variables/AbortError) with
[deferredDisposedError](https://evolu.dev/docs/api-reference/common/Task/variables/deferredDisposedError) reason.

### Example

```ts
const deferred = createDeferred<string, MyError>();

// Start waiting for the value
const fiber = run(deferred.task);

// Resolve from elsewhere (callback, another task, etc.)
deferred.resolve(ok("value"));

const result = await fiber; // ok("value")
```

## See

[createDeferred](https://evolu.dev/docs/api-reference/common/Task/functions/createDeferred)

## Extends

- [`Disposable`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html#using-declarations-and-explicit-resource-management)

## Methods

<a id="dispose"></a>

### \[dispose\]()

```ts
dispose: void;
```

Defined in: node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts:36

#### Inherited from

```ts
Disposable.[dispose]
```

## Properties

<a id="resolve"></a>

### resolve

```ts
readonly resolve: (result: Result<T,
  | AbortError
  | E
  | DeferredDisposedError>) => boolean;
```

Defined in: [packages/common/src/Task.ts:2207](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L2207)

Resolves the value. Returns `true` once, then `false`.

### task

```ts
readonly task: Task<T,
  | E
| DeferredDisposedError>;
```

Defined in: [packages/common/src/Task.ts:2204](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Task.ts#L2204)

A [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task) that waits until [Deferred.resolve](https://evolu.dev/docs/api-reference/common/Task/interfaces/Deferred#resolve) is called.