anchor.diff:  The _suricatta_ library does not have support for low level transactions api, instead of it, offers a
   lightweight abstraction over complex transaction api.
   
  -Let see an example:
  -
  -.Execute some query in a transaction block
  +.Execute a query in a transaction block.
   [source, clojure]
   ----
   (sc/atomic ctx (fn [ctx]
  
positive.code: Additionally to `atomic` high order functiom, _suricatta_ comes with convenient macro offering
  lightweight sugar sytax for atomic blocks:
  
  [source, clojure]
  ----
  (cs/with-atomic ctx
  
negative.code:     (fmt/get-sql))
  ;; => "select fullname, (select count(*) from book where (book.authorid = author.id)) "books" from author"
  ----
  
  Executing queries
  ~~~~~~~~~~~~~~~~~
  
  Almost all method in *dsl* always returns some kind of *deferred* object. That object implements
  needed protocos for make them compatible with `suricatta.core/execute` and `suricatta.core/fetch`
  functions.
  
  Let see an example:
  
  [source, clojure]
  ----
  (def my-query
    (-> (dsl/select :id)
        (dsl/from :books)
        (dsl/where ["age > ?", 100])
        (dsl/limit 1)))
  
  (with-open [ctx (sc/context dbspec)]
    (sc/fetch ctx my-query))
  ;; => [{:id 4232}]
  ----
  
  
  Async interface
  ---------------
  