AsyncDisposableStack.prototype.defer()

The defer() method of AsyncDisposableStack instances takes a callback function to be called and awaited when the stack is disposed.

See DisposableStack.prototype.defer() for general information about the defer() method.

Syntax

js
defer(onDispose)

Parameters

onDispose

A function that will be called when the stack is disposed. The function receives no arguments and can return a promise which gets awaited.

Return value

None (undefined).

Exceptions

TypeError

Thrown if onDispose is not a function.

ReferenceError

Thrown if the stack is already disposed.

Examples

Using defer()

One use case of defer() is to do something unrelated to resource freeing during scope exit, such as logging a message.

js
async function doSomething() {
  await using disposer = new AsyncDisposableStack();
  disposer.defer(async () => {
    await fs.writeFile("log.txt", "All resources freed successfully");
  });
  // Other code that claims and frees more data
}

Specifications

Specification
ECMAScript Async Explicit Resource Management
# sec-asyncdisposablestack.prototype.defer

Browser compatibility

See also