   ;; The i/o costs should be quite a bit higher than
   ;; the agent overhead...though I do know that
   ;; a go-loop would be more efficient
-  (log! logger (str "Flushing logs for " context))
+  (log! logger {::what "flushing"
+                ::context context})
   (doseq [message (::entries log-state)]
     (log! logger message))
   (flush! logger)

    (-> log-state
        (update ::lamport inc)
        (assoc ::entries [])))
  (init (inc (::lamport log-state))))

(s/fdef synchronize
        :args (s/cat :lhs ::state

  ;; worth writing this way instead
  Logger
  (log! [_ msg]
    (prn msg))
  ;; Q: Is there any point to calling .flush
  ;; on STDOUT?
  ;; A: Not according to stackoverflow.
