MCPcopy
hub / github.com/vercel/next.js / resolvePromiseWithTimeout

Function resolvePromiseWithTimeout

packages/next/src/client/lib/promise.ts:10–48  ·  view source on GitHub ↗
(
  p: Promise<T>,
  err: Error,
  devPromise: Promise<void> | undefined
)

Source from the content-addressed store, hash-verified

8
9/** Resolve a promise that times out after given amount of milliseconds. */
10export function resolvePromiseWithTimeout<T>(
11 p: Promise<T>,
12 err: Error,
13 devPromise: Promise<void> | undefined
14): Promise<T> {
15 return new Promise((resolve, reject) => {
16 let cancelled = false
17
18 p.then((r) => {
19 // Resolved, cancel the timeout
20 cancelled = true
21 resolve(r)
22 }).catch(reject)
23
24 // We wrap these checks separately for better dead-code elimination in
25 // production bundles.
26 if (process.env.NODE_ENV === 'development') {
27 ;(devPromise || Promise.resolve()).then(() => {
28 requestIdleCallback(() =>
29 setTimeout(() => {
30 if (!cancelled) {
31 reject(err)
32 }
33 }, MS_MAX_IDLE_DELAY)
34 )
35 })
36 }
37
38 if (process.env.NODE_ENV !== 'development') {
39 requestIdleCallback(() =>
40 setTimeout(() => {
41 if (!cancelled) {
42 reject(err)
43 }
44 }, MS_MAX_IDLE_DELAY)
45 )
46 }
47 })
48}

Callers 3

getMiddlewareMethod · 0.90
getClientBuildManifestFunction · 0.90
loadRouteFunction · 0.90

Calls 6

thenMethod · 0.80
resolveMethod · 0.65
resolveFunction · 0.50
setTimeoutFunction · 0.50
rejectFunction · 0.50
catchMethod · 0.45

Tested by

no test coverage detected