diff --git a/ordo/core.scm b/ordo/core.scm
index 52e9cd7..6e65ff9 100644
--- a/ordo/core.scm
+++ b/ordo/core.scm
@@ -68,7 +68,7 @@ this program. If not, see .
(define-method (execute% (task ) (conn ))
(log-msg 'DEBUG "execute task " (task-name task) " on connection")
(if ((task-pre-condition task) conn)
- (let ((result ((task-action task) conn)))
+ (let ((result (apply (task-action task) conn (map (lambda (a) (if (promise? a) (force a) a)) (task-args task)))))
(cond
((equal? result #f)
(log-msg 'NOTICE (task-name task) " - OK"))