An ESnext spec-compliant `DisposableStack`, `AsyncDisposableStack`, `Symbol.dispose`, and `Symbol.asyncDispose` shim/polyfill/replacement that works as far down as ES3.
https://tc39.es/proposal-explicit-resource-management/#sec-disposablestack-constructor