diff --git a/src/polyfills/Promise.withResolvers.ts b/src/polyfills/Promise.withResolvers.ts
new file mode 100644
index 0000000..37e186c
--- /dev/null
+++ b/src/polyfills/Promise.withResolvers.ts
@@ -0,0 +1,18 @@
+///
+
+// eslint-disable-next-line @typescript-eslint/unbound-method
+Promise.withResolvers ??= function (): PromiseWithResolvers {
+ let resolve: (value: T | PromiseLike) => void,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ reject: (reason?: any) => void;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ reject = rej;
+ });
+ return { promise, resolve, reject };
+};
+
+// @ts-expect-error 2540
+Symbol['dispose'] ??= Symbol('Symbol.dispose');
+// @ts-expect-error 2540
+Symbol['asyncDispose'] ??= Symbol('Symbol.asyncDispose');