<html><head></head><body>
<p>Hi Jakob,</p>
<p>I have asked you several times to comment on the Promise
implementation in PromisesLocal, but you have not responded. This
is unfortunate.<br/>
</p>
<blockquote>
<p>Installer ss project: 'Cryptography'; install: 'PromisesLocal'.</p>
</blockquote>
<p>Although the Promise defined in Kernel-Processes has #wait
protocol, this is really an anathema to Promise-style control
flow. The #whenResolved: protocol should be used to register a
reactor and no waits should occur.</p>
<p>One issue immediately apparent is that there is no event loop (In
the PriorityVat) that secures single-threaded behavior in the
promise. In PromisesLocal there is a LocalResolver who forwards
all pending #whenResolved: messages to the new reference, on the
event-loop Process (calls #redirectEventualMessage:). <br/>
</p>
<p>See ERef #promiseInVat: for the pair production of an asociation
with a PromiseERef and a LocalResolver. There is no equivalent to
this in Kernel-Processes.<br/>
</p>
<p>Promise-style control flow does not use mutexes nor semaphores.
So I believe the fundamental model here is misused.</p>
<p>You said:</p>
<div class="moz-cite-prefix">On 7/23/20 12:57 PM, Jakob Reschke
wrote:<br/>
</div>
<blockquote type="cite" cite="mid:CA+ovNC6dLBdbKtXb2cBefs__6yAcaGH4+oBRQwDVcFB7UTGvEw@mail.gmail.com">
<pre class="moz-quote-pre" wrap="">To move away from modal dialogs, nesting the world loop,
and from writing all the business logic in a promise-style control
flow</pre>
</blockquote>
<p>So it is your intention to "move away from promise-style control
flow." then I would suggest not using a Promise.</p>
<p>Kindly,<br/>
rabbit<br/>
</p>
</body></html>