diff --git a/knots/resource-pool.scm b/knots/resource-pool.scm index 301abbd..2efbeab 100644 --- a/knots/resource-pool.scm +++ b/knots/resource-pool.scm @@ -1178,9 +1178,16 @@ (when idle-seconds (spawn-fiber (lambda () - (while #t - (sleep idle-seconds) - (put-message channel '(check-for-idle-resources)))))) + (let loop () + (put-message channel '(check-for-idle-resources)) + (when (choice-operation + (wrap-operation + (sleep-operation idle-seconds) + (const #t)) + (wrap-operation + (wait-operation destroy-condition) + (const #f))) + (loop)))))) (with-exception-handler (lambda (exn)