From 9bcb91ceaeca6ba063e299a9ab5435d3967f270f Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Sat, 25 Jan 2020 17:21:51 +0100 Subject: [PATCH] :lipstick: Improve code of vertx timers ns. --- backend/vendor/vertx/src/vertx/timers.clj | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/backend/vendor/vertx/src/vertx/timers.clj b/backend/vendor/vertx/src/vertx/timers.clj index ed8098822d..c7519074ed 100644 --- a/backend/vendor/vertx/src/vertx/timers.clj +++ b/backend/vendor/vertx/src/vertx/timers.clj @@ -58,19 +58,19 @@ state (atom nil) taskfn (fn wrapped-task [] (-> (p/do! ((::fn opts) opts)) - (p/catch' (constantly nil)) ; explicitly ignore all errors + (p/catch' (constantly nil)) ; explicitly ignore all errors (p/then' (fn [_] ; the user needs to catch errors - (when repeat + (if repeat (let [tid (schedule-once! vsm delay wrapped-task)] (reset! state tid) - nil)))))) - tid (schedule-once! vsm delay taskfn)] - (reset! state tid) + nil)) + (do + (reset! state nil) + nil))))) + tid (reset! state (schedule-once! vsm delay taskfn))] (reify java.lang.AutoCloseable (close [this] - (locking this - (when-let [timer-id (deref state)] - (.cancelTimer system timer-id) - (reset! state nil))))))) + (when (compare-and-set! state tid nil) + (.cancelTimer system tid))))))