AsyncDisposableStack.prototype.defer()
Baseline Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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
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
onDisposeis 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.
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
| 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 | |
defer |
134 |
134 |
141 |
119 |
preview |
134 |
141 |
88 |
No |
29.0 |
134 |
No |
1.3.0 |
2.2.10 |
24.0.0 |
See also
- JavaScript resource management
AsyncDisposableStackAsyncDisposableStack.prototype.adopt()AsyncDisposableStack.prototype.use()
© 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/AsyncDisposableStack/defer