2226
`);
2227
}
2228
});
2229
+
2230
+ it('can track IO that is chained via then(async ...)', async () => {
2231
+ function getData(text) {
2232
+ return delay(1).then(async () => {
2233
+ return text.toUpperCase();
2234
+ });
2235
+ }
2236
+
2237
+ async function Component({text, promise}) {
2238
+ return await getData('hi, sebbie');
2239
+ }
2240
+
2241
+ const stream = ReactServerDOMServer.renderToPipeableStream(<Component />);
2242
+
2243
+ const readable = new Stream.PassThrough(streamOptions);
2244
+
2245
+ const result = ReactServerDOMClient.createFromNodeStream(readable, {
2246
+ moduleMap: {},
2247
+ moduleLoading: {},
2248
+ });
2249
+ stream.pipe(readable);
2250
+
2251
+ expect(await result).toBe('HI, SEBBIE');
2252
+
2253
+ await finishLoadingStream(readable);
2254
+ if (
2255
+ __DEV__ &&
2256
+ gate(
2257
+ flags =>
2258
+ flags.enableComponentPerformanceTrack && flags.enableAsyncDebugInfo,
2259
+ )
2260
+ ) {
2261
+ expect(getDebugInfo(result)).toMatchInlineSnapshot(`
2262
+ [
2263
+ {
2264
+ "time": 0,
2265
+ },
2266
+ {
2267
+ "env": "Server",
2268
+ "key": null,
2269
+ "name": "Component",
2270
+ "props": {},
2271
+ "stack": [
2272
+ [
2273
+ "Object.<anonymous>",
2274
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2275
+ 2241,
2276
+ 109,
2277
+ 2230,
2278
+ 58,
2279
+ ],
2280
+ ],
2281
+ },
2282
+ {
2283
+ "time": 0,
2284
+ },
2285
+ {
2286
+ "awaited": {
2287
+ "end": 0,
2288
+ "env": "Server",
2289
+ "name": "delay",
2290
+ "owner": {
2291
+ "env": "Server",
2292
+ "key": null,
2293
+ "name": "Component",
2294
+ "props": {},
2295
+ "stack": [
2296
+ [
2297
+ "Object.<anonymous>",
2298
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2299
+ 2241,
2300
+ 109,
2301
+ 2230,
2302
+ 58,
2303
+ ],
2304
+ ],
2305
+ },
2306
+ "stack": [
2307
+ [
2308
+ "delay",
2309
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2310
+ 160,
2311
+ 12,
2312
+ 159,
2313
+ 3,
2314
+ ],
2315
+ [
2316
+ "getData",
2317
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2318
+ 2232,
2319
+ 14,
2320
+ 2231,
2321
+ 5,
2322
+ ],
2323
+ [
2324
+ "Component",
2325
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2326
+ 2238,
2327
+ 20,
2328
+ 2237,
2329
+ 5,
2330
+ ],
2331
+ ],
2332
+ "start": 0,
2333
+ "value": {
2334
+ "value": undefined,
2335
+ },
2336
+ },
2337
+ "env": "Server",
2338
+ "owner": {
2339
+ "env": "Server",
2340
+ "key": null,
2341
+ "name": "Component",
2342
+ "props": {},
2343
+ "stack": [
2344
+ [
2345
+ "Object.<anonymous>",
2346
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2347
+ 2241,
2348
+ 109,
2349
+ 2230,
2350
+ 58,
2351
+ ],
2352
+ ],
2353
+ },
2354
+ "stack": [
2355
+ [
2356
+ "getData",
2357
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2358
+ 2232,
2359
+ 23,
2360
+ 2231,
2361
+ 5,
2362
+ ],
2363
+ [
2364
+ "Component",
2365
+ "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js",
2366
+ 2238,
2367
+ 20,
2368
+ 2237,
2369
+ 5,
2370
+ ],
2371
+ ],
2372
+ },
2373
+ {
2374
+ "time": 0,
2375
+ },
2376
+ {
2377
+ "time": 0,
2378
+ },
2379
+ ]
2380
+ `);
2381
+ }
2382
+ });
2383
});