Marc,
in _std.scm you have the following code implementing force:
(define-prim (##force obj)
(if (##promise? obj)
(let ((result (##promise-result obj)))
(if (##eq? result obj)
(let* ((r ((##promise-thunk obj)))
(result2 (##promise-result obj)))
(if (##eq? result2 obj)
(begin
(##promise-result-set! obj r)
(##promise-thunk-set! obj #f)
r)
result2))))
;; XXX -- value is unspecified when (not (##eq? result obj))