Documentation for TAwait.ExecP<TModalResult>(newform.Execute);

While solving another problem I saw that the new multiform demo for WebCore 2.5.4 has a new approach to create forms at runtime, but neither in the DevGuide or the other documents I could find any reference to TAwait.ExecP and to why TModalResult or TForm2 are between brackets.

Didn't find any description of TAwait and what is ExecP.

Am just trying to learn how this approach for creating form works. Before actually assembling the code, reading the documentation is my best way of deciding how to use the components.

Can someone point me to the corresponding documentation?

It is an LSP friendly construct for await(ResultType, Proc);
When using await(), the LSP does not understans this pas2js allowed syntax.
With using the equivalent generic TAwait.ExecP(proc) , the LSP will not complain.

Ooh, I like getting rid of those red marks. What's the equivalent LSP-friendly syntax for await (Proc)?

await(type,proc) => TAwait.ExecP(proc);

See demo : Demo\Basics\MultiForm where it is used.

Hmm...I found that TAwait.Exec<TProc> (<some procedure>) seems to work, whereas the LSP still complains if I use TAwait.ExecP(<some procedure>). What am I missing?

Oops. The LSP and the compiler give no complaints about the syntax TAwait.Exec<TProc>(aprocedure), but no "wait" happens.

When I examined Demo\Basics\MultiForm\unit1.pas in my IDE it showed LSP objections to the syntax used there. I thought that "LSP friendly" would mean no red squigglies....

I use the older method and it is working as expected now. I uploaded the test project with the solutions I found, here:

What Delphi version do you use?
I do not see red squigglies here.

I'm using 12.1 and when I opened the demo just now via the dproj file there were no squigglies. I saw them yesterday when I had opened only the pas/dfm file while another Web Core project was already open. I don't understand why there should be a difference between those two, but there is clearly some difference in the LSP behavior.

Maybe code in another file in the project is confusing the LSP?