           (prn "Job not covered yet. Backing off and trying again")
           (Thread/sleep 2000))
 
-        (thread (release-messages! messenger pipeline-data))
+        (release-messages! messenger pipeline-data)
+        (listen-for-sealer job-id task-id pipeline-data seal-resp-ch outbox-ch)
         (thread (run-task-lifecycle pipeline-data kill-ch))
-        (thread (listen-for-sealer pipeline-data seal-resp-ch))
 
         (assoc component :pipeline-data pipeline-data :kill-ch kill-ch :seal-ch seal-resp-ch))
       (catch Exception e

          (close-temporal-resources))
      (recur init-event))))

(defn listen-for-sealer [init-event ch]
  ;; TODO: only launch for output tasks
  (try
    (when (<!! ch)
      (p-ext/seal-resource init-event))
    (catch Exception e
      (warn e))))

(defrecord TaskLifeCycle [id log messenger-buffer messenger job-id task-id replica restart-ch outbox-ch seal-resp-ch opts]
  component/Lifecycle

  (merge event (l-ext/close-temporal-resources* event)))

(defn release-messages! [messenger event]
  (go
   (loop []
     (when-let [id (<! (:release-ch messenger))]
       (p-ext/ack-message event id)
       (recur)))))

(defn handle-exception [e restart-ch outbox-ch job-id]
  (warn e)
