AsyncDisposableStack.prototype.use() - JavaScript | MDN

Syntax

Parameters

value

The value to register to the stack. Must either contain a [Symbol.asyncDispose]() or [Symbol.dispose]() method, or be null or undefined.

Return value

The same value that was passed in.

Exceptions

TypeError

Thrown if value is not null or undefined, and does not contain a [Symbol.asyncDispose]() or [Symbol.dispose]() method.

ReferenceError

Thrown if the stack is already disposed.

Examples

Using use()

This function reads a file (as a Node.js FileHandle) and returns its contents. The file handle is automatically closed when the function completes, given that the FileHandle class implements a [Symbol.asyncDispose]() method that asynchronously closes the file.

js

async function readFileContents(path) {
  await using disposer = new AsyncDisposableStack();
  const handle = disposer.use(await fs.open(path));
  const data = await handle.read();
  return data;
  // The disposer is disposed here, which causes handle to be closed too
}

Specifications

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

Browser compatibility

See also

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.