 
 
 (defn make-dynamic-store
-  "Given a fetch function (fn [old-data])->new-data that fetches a map instance, and initial data (`nil`: initialized
-  asynchronously in another thread), create a dynamic store that refreshes itself.
+  "Given a fetch function `(fn [old-data]) -> new-data` that fetches a map instance, and initial data
+  (`nil`: initialized asynchronously in another thread), create a dynamic store that refreshes itself.
 
-  ## Options
+  ### Options
 
   | Kwarg          | Type/format                 | Description                 | Default |
   |----------------|-----------------------------|-----------------------------|---------|



(defn fetch-every?
  "Given duration in milliseconds, return a fetch decider (fn fetch? [last-fetch-time-millis]) that returns `true` if
  it is time to fetch data, `false` otherwise."
  [^long duration-millis]
  (fn [^StoreState store-state]
    (>= (i/now-millis (.-updated-at store-state))



(defn fetch-if-error?
  "Given error-timestamp key and duration since error, return a fetch decider (predicate) function

  ```
  (fn [^keypin.type.record.StoreState store-state]) -> boolean
  ```

  that returns `true` if error happened + duration elapsed,
  `false` if error happened + duration NOT elapsed, `true` otherwise.

  |Error occured?|Duration elapsed?|Return|
  |--------------|-----------------|------|
  |      Yes     |       Yes       | True |
  |              |        No       | False|
  |       No     |                 | True |

  See: [[make-dynamic-store]]"
  [err-ts-key ^long millis-since-error]
  (fn [^StoreState store-state]
    (if-let [err-ts (get store-state err-ts-key)]
