<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>