make the queue-callback/res function queue low-priority callbacks

This should have been like this all along; I think it can lead to
race-conditions with high-priority events. In particular, something
might be pending in the event queue and then the test suite might
queue a high-priority event to check for it, which could happen before
the event that actually does the work that's being checked for!
This commit is contained in:
Robby Findler 2012-12-09 08:53:42 -06:00
parent 04fbb02f63
commit 8907daf65f

View File

@ -242,7 +242,8 @@
(define (queue-callback/res thunk)
(not-on-eventspace-handler-thread 'queue-callback/res)
(let ([c (make-channel)])
(queue-callback (λ () (channel-put c (with-handlers ((exn:fail? values)) (call-with-values thunk list)))))
(queue-callback (λ () (channel-put c (with-handlers ((exn:fail? values)) (call-with-values thunk list))))
#f)
(define res (channel-get c))
(when (exn? res) (raise res))
(apply values res)))