I wonder how does it work with destructuring? The last example extracts `connection` from the returned object:
await using { connection } = getConnection();
If you are used to Rust semantics, you'd expect that the whole thing is disposed, apart from still living objects. Reading this line I am immediately afraid that the whole object is disposed immediately (or right on the next line), the callback is called and your `connection` a couple of lines later will be closed already.