AsyncDisposableStack.prototype.adopt()
The adopt()
method of AsyncDisposableStack
instances registers a value that doesn't implement the async disposable protocol to the stack by providing a custom disposer function.
See DisposableStack.prototype.adopt()
for general information about the adopt()
method.
Syntax
adopt(value, onDispose)
Parameters
Return value
The same value
that was passed in.
Exceptions
TypeError
-
Thrown if
onDispose
is not a function. ReferenceError
-
Thrown if the stack is already disposed.
Examples
Using adopt()
This function creates a file handle (as a Node.js FileHandle
), that gets closed when the function completes. We suppose that the file handle does not implement the async disposable protocol (in reality it does), so we use adopt()
to register it to the stack. Because the handle.close()
method returns a promise, we need to use an AsyncDisposableStack
so that the disposal gets awaited.
async function readFile(path) {
await using disposer = new AsyncDisposableStack();
const handle = disposer.adopt(
fs.open(path),
async (handle) => await handle.close(),
);
const data = await handle.read();
// The handle.close() method is called and awaited here before exiting
return data;
}
Specifications
No specification found
No specification data found for javascript.builtins.AsyncDisposableStack.adopt
.
Check for problems with this page or contribute a missing spec_url
to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.