Compare commits

...

1 Commits

Author SHA1 Message Date
Sofia Rodrigues
8e26cadf9b fix: selector 2026-03-05 10:35:47 -03:00

View File

@@ -244,19 +244,22 @@ does not start the signal waiter.
def selector (s : Signal.Waiter) : Selector Unit :=
{
tryFn := do
let signalWaiter : AsyncTask _ async s.wait
if IO.hasFinished signalWaiter then
let signalWaiter s.native.next
if signalWaiter.isResolved then
return some ()
else
s.native.cancel
return none
registerFn waiter := do
let signalWaiter s.wait
discard <| AsyncTask.mapIO (x := signalWaiter) fun _ => do
let lose := return ()
let win promise := promise.resolve (.ok ())
waiter.race lose win
let signalWaiter s.native.next
BaseIO.chainTask signalWaiter.result? fun
| none => do
return ()
| some _ =>
let lose := return ()
let win promise := promise.resolve (.ok ())
waiter.race lose win
unregisterFn := s.native.cancel