From f38456b4c60510722ae815a9f09bd5d124da5690 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Mon, 5 Jan 2026 10:44:34 +0000 Subject: [PATCH] Add fibers-delay/eager --- knots/promise.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/knots/promise.scm b/knots/promise.scm index 6aa3f0b..c01d219 100644 --- a/knots/promise.scm +++ b/knots/promise.scm @@ -28,6 +28,7 @@ #:export (fibers-promise? fibers-delay + fibers-delay/eager fibers-force fibers-promise-reset fibers-promise-result-available?)) @@ -105,6 +106,20 @@ (raise-exception res) (apply values res)))))) + +(define (fibers-delay/eager thunk) + (let ((promise (fibers-delay thunk))) + (spawn-fiber + (lambda () + (with-exception-handler + (lambda _ + ;; Silently handle this exception + #f) + (lambda () + (fibers-force promise)) + #:unwind? #t))) + promise)) + (define (fibers-promise-reset fp) (atomic-box-set! (fibers-promise-values-box fp) #f))