anchor.diff:  
   The main disadvantage of `mlet` is that it's evaluation model is strictly
   secuential. It is ok for some use cases, when the sequential order is mandatory.
  -But, if the strictly secuential model is not mandatory, `mlet` does not take
  -the advantage of concurrency.
  -
  -For solve this problem, it there `alet` macro. It is almost identical to `mlet`
  -from the user experience but internally it is based in very different abstractions.
  -
  -Now, we will try to do the same example but using the `alet` macro:
  +
  +But, if the strictly secuential model is not mandatory, `alet` macro can be used
  +as drop-in-replacement for `mlet` that automatically exploits the concurrency:
   
   [source, clojure]
   ----
  
positive.code: ;; => Stdout: 83
  ----
  
  We can observe that the return value is identical to the previous example,
  but it takes almost half of time to finish execute all the computations. This
  is happens because `alet` is more smarter macro and calculates de dependencies
  between declared bindings and executes them in batches.
  
  You can read more about that link:http://funcool.github.io/cats/latest/#syntax-sugar[here].
  
  
  === Error handling
  
negative.code: ----
  (-> (some-async-task)
      (p/timeout 200)
      (p/then #(println "Task finished" %))
      (p/catch #(println "Timeout" %)))
  ----
  
  In case the async task is slow, in the example more that 200ms, the promise will be
  rejected with timeout error and successfully captured with the `catch` handler.
  
  
  == Developers Guide
  
  === Contributing
  