sebmarkbage 8aff9a7a73 Serialize Promises through Flight (#26086)
This lets you pass Promises from server components to client components
and `use()` them there.

We still don't support Promises as children on the client, so we need to
support both. This will be a lot simpler when we remove the need to
encode children as lazy since we don't need the lazy encoding anymore
then.

I noticed that this test failed because we don't synchronously resolve
instrumented Promises if they're lazy. The second fix calls `.then()`
early to ensure that this lazy initialization can happen eagerly. ~It
felt silly to do this with an empty function or something, so I just did
the attachment of ping listeners early here. It's also a little silly
since they will ping the currently running render for no reason if it's
synchronously available.~ EDIT: That didn't work because a ping might
interrupt the current render. Probably need a bigger refactor.

We could add another extension but we've already taken a lot of
liberties with the Promise protocol. At least this is one that doesn't
need extension of the protocol as much. Any sub-class of promises could
do this.

DiffTrain build for [9d111ffdfb](https://github.com/facebook/react/commit/9d111ffdfbcfee4b348a3d49c16f02cb718c896f)
[View git log for this commit](https://github.com/facebook/react/commits/9d111ffdfbcfee4b348a3d49c16f02cb718c896f)
2023-02-01 18:05:07 +00:00
2020-01-09 14:07:41 -08:00
S
Description
No description provided
Readme MIT
1.8 GiB
Languages
JavaScript 67.1%
TypeScript 29.4%
HTML 1.5%
CSS 1.1%
C++ 0.6%
Other 0.2%