It occurs to me that there is still a problem with our #call: implementation.<br><br>We
are using partial continuations, which is great, but we are still using
an exception to signal the end of callback processing. Signaling an
exception results the callback contexts being unwound and #ensure:
blocks in the callback being triggered. This is why
WAClosureFunctionalTest doesn&#39;t really make sense.<br>
<br>I noticed this because I noticed that WAComponent&gt;&gt;filterWith:<div id=":10n" class="ArwC7c ckChnd">during:
did not use an #ensure: to remove the filter. I was going to change
that and move the method to WARequestContext but realized that I can&#39;t
do that and have the method work properly with #call:<br>
<br>So it seems to me that what we should be doing on a #call: is
saving the partial continuation for the callback and then throwing
those contexts away. One option would be to simply capture a full
continuation before doing the callback but this requires a hook at that
point again (which I know Lukas is strongly against). The only other
solution I can think of is to create a new, empty PartialContinuation
and then evaluate it with the same marker that we used to create the
other continuation (ie. the #evaluateWithArgument: method). This
effectively results in throwing away the callback contexts and
returning as if the callback completed. #evaluateWithArgument: would
then signal the exception.<br>
<br>Does this make any sense?<br><font color="#888888"><br>Julian</font></div>