[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:5329](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5329)

A one-shot value resolved from outside the waiting [Task](https://evolu.dev/docs/api-reference/common/Task/type-aliases/Task).

Use Deferred when Task code must wait for a [Result](https://evolu.dev/docs/api-reference/common/Result/type-aliases/Result) completed by an
external callback or another Task. Deferred is `Promise.withResolvers` with
Task semantics: each waiter uses its waiting [Run](https://evolu.dev/docs/api-reference/common/Task/interfaces/Run) lifetime, can abort
independently, appears in Run observability, and settles with Result-based
errors.

The Deferred resolves once. Later calls to [Deferred.resolve](https://evolu.dev/docs/api-reference/common/Task/interfaces/Deferred#resolve) return
`false` and do not change the Result.

## See

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

## Properties

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

### resolve

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

Defined in: [packages/common/src/Task.ts:5334](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5334)

Resolves the Deferred, returning whether this call completed it.

### task

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

Defined in: [packages/common/src/Task.ts:5331](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Task.ts#L5331)

Waits until [Deferred.resolve](https://evolu.dev/docs/api-reference/common/Task/interfaces/Deferred#resolve) resolves the Deferred.