diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts
index 28d7d3d4bdf..64546188a88 100644
--- a/src/compiler/commandLineParser.ts
+++ b/src/compiler/commandLineParser.ts
@@ -221,7 +221,7 @@ const libEntries: [string, string][] = [
["esnext.disposable", "lib.esnext.disposable.d.ts"],
["esnext.bigint", "lib.es2020.bigint.d.ts"],
["esnext.string", "lib.es2022.string.d.ts"],
- ["esnext.promise", "lib.es2021.promise.d.ts"],
+ ["esnext.promise", "lib.esnext.promise.d.ts"],
["esnext.weakref", "lib.es2021.weakref.d.ts"],
["esnext.decorators", "lib.esnext.decorators.d.ts"],
["decorators", "lib.decorators.d.ts"],
diff --git a/src/lib/esnext.d.ts b/src/lib/esnext.d.ts
index cf34802c0e2..0fd9d10076e 100644
--- a/src/lib/esnext.d.ts
+++ b/src/lib/esnext.d.ts
@@ -2,3 +2,4 @@
///
///
///
+///
diff --git a/src/lib/esnext.promise.d.ts b/src/lib/esnext.promise.d.ts
new file mode 100644
index 00000000000..fbed8c9aa2c
--- /dev/null
+++ b/src/lib/esnext.promise.d.ts
@@ -0,0 +1,17 @@
+interface PromiseWithResolvers {
+ promise: Promise;
+ resolve: (value: T | PromiseLike) => void;
+ reject: (reason?: any) => void;
+}
+
+interface PromiseConstructor {
+ /**
+ * Creates a new Promise and returns it in an object, along with its resolve and reject functions.
+ * @returns An object with the properties `promise`, `resolve`, and `reject`.
+ *
+ * ```ts
+ * const { promise, resolve, reject } = Promise.withResolvers();
+ * ```
+ */
+ withResolvers(): PromiseWithResolvers;
+}
diff --git a/src/lib/libs.json b/src/lib/libs.json
index 5bb4ab80162..0c7fd7d53e7 100644
--- a/src/lib/libs.json
+++ b/src/lib/libs.json
@@ -71,6 +71,7 @@
"esnext.decorators",
"esnext.intl",
"esnext.disposable",
+ "esnext.promise",
"decorators",
"decorators.legacy",
// Default libraries
diff --git a/tests/baselines/reference/promiseWithResolvers.js b/tests/baselines/reference/promiseWithResolvers.js
new file mode 100644
index 00000000000..889227b0e85
--- /dev/null
+++ b/tests/baselines/reference/promiseWithResolvers.js
@@ -0,0 +1,9 @@
+//// [tests/cases/compiler/promiseWithResolvers.ts] ////
+
+//// [promiseWithResolvers.ts]
+type T = {};
+const { promise, resolve, reject } = Promise.withResolvers();
+
+
+//// [promiseWithResolvers.js]
+const { promise, resolve, reject } = Promise.withResolvers();
diff --git a/tests/baselines/reference/promiseWithResolvers.symbols b/tests/baselines/reference/promiseWithResolvers.symbols
new file mode 100644
index 00000000000..3a67e16387f
--- /dev/null
+++ b/tests/baselines/reference/promiseWithResolvers.symbols
@@ -0,0 +1,15 @@
+//// [tests/cases/compiler/promiseWithResolvers.ts] ////
+
+=== promiseWithResolvers.ts ===
+type T = {};
+>T : Symbol(T, Decl(promiseWithResolvers.ts, 0, 0))
+
+const { promise, resolve, reject } = Promise.withResolvers();
+>promise : Symbol(promise, Decl(promiseWithResolvers.ts, 1, 7))
+>resolve : Symbol(resolve, Decl(promiseWithResolvers.ts, 1, 16))
+>reject : Symbol(reject, Decl(promiseWithResolvers.ts, 1, 25))
+>Promise.withResolvers : Symbol(PromiseConstructor.withResolvers, Decl(lib.esnext.promise.d.ts, --, --))
+>Promise : Symbol(Promise, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.promise.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2018.promise.d.ts, --, --))
+>withResolvers : Symbol(PromiseConstructor.withResolvers, Decl(lib.esnext.promise.d.ts, --, --))
+>T : Symbol(T, Decl(promiseWithResolvers.ts, 0, 0))
+
diff --git a/tests/baselines/reference/promiseWithResolvers.types b/tests/baselines/reference/promiseWithResolvers.types
new file mode 100644
index 00000000000..9eea54879d6
--- /dev/null
+++ b/tests/baselines/reference/promiseWithResolvers.types
@@ -0,0 +1,15 @@
+//// [tests/cases/compiler/promiseWithResolvers.ts] ////
+
+=== promiseWithResolvers.ts ===
+type T = {};
+>T : {}
+
+const { promise, resolve, reject } = Promise.withResolvers();
+>promise : Promise
+>resolve : (value: T | PromiseLike) => void
+>reject : (reason?: any) => void
+>Promise.withResolvers() : PromiseWithResolvers
+>Promise.withResolvers : () => PromiseWithResolvers
+>Promise : PromiseConstructor
+>withResolvers : () => PromiseWithResolvers
+
diff --git a/tests/baselines/reference/tsc/runWithoutArgs/does-not-add-color-when-NO_COLOR-is-set.js b/tests/baselines/reference/tsc/runWithoutArgs/does-not-add-color-when-NO_COLOR-is-set.js
index 7d809130885..144118fae91 100644
--- a/tests/baselines/reference/tsc/runWithoutArgs/does-not-add-color-when-NO_COLOR-is-set.js
+++ b/tests/baselines/reference/tsc/runWithoutArgs/does-not-add-color-when-NO_COLOR-is-set.js
@@ -111,7 +111,7 @@ default: undefined
--lib
Specify a set of bundled library declaration files that describe the target runtime environment.
-one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
+one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
default: undefined
--allowJs
diff --git a/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped-when-host-can't-provide-terminal-width.js b/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped-when-host-can't-provide-terminal-width.js
index c4fcbab8f12..4f6bbee5e0a 100644
--- a/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped-when-host-can't-provide-terminal-width.js
+++ b/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped-when-host-can't-provide-terminal-width.js
@@ -111,7 +111,7 @@ default: undefined
[94m--lib[39m
Specify a set of bundled library declaration files that describe the target runtime environment.
-one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
+one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
default: undefined
[94m--allowJs[39m
diff --git a/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js b/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js
index c4fcbab8f12..4f6bbee5e0a 100644
--- a/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js
+++ b/tests/baselines/reference/tsc/runWithoutArgs/show-help-with-ExitStatus.DiagnosticsPresent_OutputsSkipped.js
@@ -111,7 +111,7 @@ default: undefined
[94m--lib[39m
Specify a set of bundled library declaration files that describe the target runtime environment.
-one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise/esnext.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.decorators, decorators, decorators.legacy
+one or more: es5, es6/es2015, es7/es2016, es2017, es2018, es2019, es2020, es2021, es2022, es2023, esnext, dom, dom.iterable, webworker, webworker.importscripts, webworker.iterable, scripthost, es2015.core, es2015.collection, es2015.generator, es2015.iterable, es2015.promise, es2015.proxy, es2015.reflect, es2015.symbol, es2015.symbol.wellknown, es2016.array.include, es2016.intl, es2017.date, es2017.object, es2017.sharedmemory, es2017.string, es2017.intl, es2017.typedarrays, es2018.asyncgenerator, es2018.asynciterable/esnext.asynciterable, es2018.intl, es2018.promise, es2018.regexp, es2019.array, es2019.object, es2019.string, es2019.symbol/esnext.symbol, es2019.intl, es2020.bigint/esnext.bigint, es2020.date, es2020.promise, es2020.sharedmemory, es2020.string, es2020.symbol.wellknown, es2020.intl, es2020.number, es2021.promise, es2021.string, es2021.weakref/esnext.weakref, es2021.intl, es2022.array, es2022.error, es2022.intl, es2022.object, es2022.sharedmemory, es2022.string/esnext.string, es2022.regexp, es2023.array/esnext.array, es2023.collection/esnext.collection, esnext.intl, esnext.disposable, esnext.promise, esnext.decorators, decorators, decorators.legacy
default: undefined
[94m--allowJs[39m
diff --git a/tests/baselines/reference/typesVersions.ambientModules.trace.json b/tests/baselines/reference/typesVersions.ambientModules.trace.json
index b83224aec0d..b8461698d9e 100644
--- a/tests/baselines/reference/typesVersions.ambientModules.trace.json
+++ b/tests/baselines/reference/typesVersions.ambientModules.trace.json
@@ -822,6 +822,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersions.emptyTypes.trace.json b/tests/baselines/reference/typesVersions.emptyTypes.trace.json
index 826ef3c5b5a..6a0282a43d6 100644
--- a/tests/baselines/reference/typesVersions.emptyTypes.trace.json
+++ b/tests/baselines/reference/typesVersions.emptyTypes.trace.json
@@ -853,6 +853,19 @@
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersions.justIndex.trace.json b/tests/baselines/reference/typesVersions.justIndex.trace.json
index 129eb5c2d12..6177a45aaac 100644
--- a/tests/baselines/reference/typesVersions.justIndex.trace.json
+++ b/tests/baselines/reference/typesVersions.justIndex.trace.json
@@ -853,6 +853,19 @@
"Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/.src/node_modules' does not exist, skipping all lookups in it.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersions.multiFile.trace.json b/tests/baselines/reference/typesVersions.multiFile.trace.json
index 3bdc67a0931..589e95c6469 100644
--- a/tests/baselines/reference/typesVersions.multiFile.trace.json
+++ b/tests/baselines/reference/typesVersions.multiFile.trace.json
@@ -801,6 +801,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.trace.json b/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.trace.json
index b83224aec0d..b8461698d9e 100644
--- a/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.trace.json
+++ b/tests/baselines/reference/typesVersionsDeclarationEmit.ambient.trace.json
@@ -822,6 +822,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.trace.json b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.trace.json
index 3bdc67a0931..589e95c6469 100644
--- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.trace.json
+++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFile.trace.json
@@ -801,6 +801,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.trace.json b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.trace.json
index 0ce2b1bbe30..231fee4507e 100644
--- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.trace.json
+++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToSelf.trace.json
@@ -824,6 +824,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.trace.json b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.trace.json
index 9e2cbc93c72..c31f2afd0f3 100644
--- a/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.trace.json
+++ b/tests/baselines/reference/typesVersionsDeclarationEmit.multiFileBackReferenceToUnmapped.trace.json
@@ -807,6 +807,18 @@
"Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
"Directory '/node_modules' does not exist, skipping all lookups in it.",
"======== Module name '@typescript/lib-esnext/disposable' was not resolved. ========",
+ "======== Resolving module '@typescript/lib-esnext/promise' from '/.src/__lib_node_modules_lookup_lib.esnext.promise.d.ts__.ts'. ========",
+ "Explicitly specified module resolution kind: 'Node10'.",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: TypeScript, Declaration.",
+ "Searching all ancestor node_modules directories for preferred extensions: TypeScript, Declaration.",
+ "Directory '/.src/node_modules/@types' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "Scoped package detected, looking in 'typescript__lib-esnext/promise'",
+ "Loading module '@typescript/lib-esnext/promise' from 'node_modules' folder, target file types: JavaScript.",
+ "Searching all ancestor node_modules directories for fallback extensions: JavaScript.",
+ "Directory '/node_modules' does not exist, skipping all lookups in it.",
+ "======== Module name '@typescript/lib-esnext/promise' was not resolved. ========",
"======== Resolving module '@typescript/lib-dom' from '/.src/__lib_node_modules_lookup_lib.dom.d.ts__.ts'. ========",
"Explicitly specified module resolution kind: 'Node10'.",
"Loading module '@typescript/lib-dom' from 'node_modules' folder, target file types: TypeScript, Declaration.",
diff --git a/tests/cases/compiler/promiseWithResolvers.ts b/tests/cases/compiler/promiseWithResolvers.ts
new file mode 100644
index 00000000000..33b43d616f6
--- /dev/null
+++ b/tests/cases/compiler/promiseWithResolvers.ts
@@ -0,0 +1,4 @@
+// @target: esnext
+
+type T = {};
+const { promise, resolve, reject } = Promise.withResolvers();