Symbol.asyncDispose

The Symbol.asyncDispose static data property represents the well-known symbol Symbol.asyncDispose. The await using declaration looks up this symbol on the variable initializer for the method to call when the variable goes out of scope.

Value

The well-known symbol Symbol.asyncDispose.

Property attributes of Symbol.asyncDispose
Writableno
Enumerableno
Configurableno

Description

An object is async disposable if it has the [Symbol.asyncDispose]() method. The method is expected to have the following semantics:

Examples

undefined

User defined async disposables

[Symbol.asyncDispose] allows the creation of custom async disposables. See the await using reference for more information.

js
class Disposable {
  #fileHandle;
  #disposed;

  constructor(handle) {
    this.#disposed = false;
    this.#fileHandle = handle;
  }

  async [Symbol.asyncDispose]() {
    await this.#fileHandle.close();
    this.disposed = true;
  }

  get isDisposed() {
    return this.disposed;
  }
}

const resource = new Disposable(await fs.open("my-file.txt", "r"));
{
  await using resourceUsed = resource;
  console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true

Specifications

See also