anchor.diff:  
   [source, clojure]
   ----
  -(require '[promissum.core :as p])
  +(require '[promesa.core :as p])
   (require '[cats.core :as m])
   
   (defn my-async-handler
  
positive.code: _catacumba_ session storage abstraction is almost identical to the ring session
  abstraction, so migrating from or adapting the ring session storages is really
  easy. The unique difference is that functions should return a promise (from
  promissum library).
  
  To use a concrete session storage, just pass a instance of it as value of
  the `:storage` key in a session handler constructor:
  
negative.code: ----
  
  In addition to plain return value, you can freely return a promise or deferred
  (from *promesa* and *manifold* libraries respecively). And if that abstractions
  dors not satisfies you, the system is completly open to be extended with your
  own abstractions.
  
  