This feature is not Baseline because it does not work in some of the most widely-used browsers.
The use() method of DisposableStack instances registers a value that implements the disposable protocol to the stack.
use(value)
valueThe value to register to the stack. Must either contain a [Symbol.dispose]() method, or be null or undefined.
The same value that was passed in.
TypeErrorThrown if value is not null or undefined, and does not contain a [Symbol.dispose]() method.
ReferenceErrorThrown if the stack is already disposed.
The primary purpose of use() is to register a value that implements the disposable protocol to the stack, as the equivalent of the using declaration. If the value does not implement the disposable protocol (it doesn't have the [Symbol.dispose]() method), use adopt() instead, passing a callback that calls the resource's cleanup method.
You should make your resource registered as soon as it's declared. This means you should always wrap your resource acquisition expression in use(), instead of extracting it to a separate statement.
using disposer = new DisposableStack(); const reader = stream.getReader(); disposer.use(reader);
This code consumes a ReadableStream via a ReadableStreamDefaultReader. The reader is automatically closed when the function completes, assuming it implements a [Symbol.dispose]() method that synchronously releases the lock on the stream.
{
using disposer = new DisposableStack();
const reader = disposer.use(stream.getReader());
const { value, done } = reader.read();
if (!done) {
// Process the value
}
// The reader.releaseLock() method is called here before exiting
}
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
use |
134 | 134 | 141 | 119 | No | 134 | 141 | 88 | No | 29.0 | 134 | No | 1.3.0 | 2.2.10 | 24.0.0 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DisposableStack/use