One other approach is to wrap some scheme code around each request: (let ([v #f]) ... code to retrieve value ... (thread (lambda () (set! v ...))) Would something like that work for you? Robby