anchor.diff:                (.log js/console "The first one finished: " x))))
   ----
   
  -
   Later, for more advanced use cases, _promesa_ is an algebraic structure that
   implements the associative binary operation usually called `mappend`:
   
  
positive.code: 
  == Introduction
  
  A promise library for ClojureScript that uses
  link:https://github.com/petkaantonov/bluebird/[bluebird] behind the scenes.
  
  
  === Rationale
  
  Before I started writing this library I reviewed the following:
  
  * link:https://github.com/bodil/redlobster[redlobster]
  * link:https://github.com/Breezeemr/promise[promise]
  * link:https://github.com/jamesmacaulay/cljs-promises[cljs-promises]
  
  And all them have one thing in common, they are not actively maintained.
  
  With the exception of cljs-promises, the other two libraries attempt to emulate the
  clojure promise which is based on a blocking api this is not very natural in
  JavaScript environments.
  
  Also, the last one, uses a core.async abstraction. This is not bad as core.async is
  a very well done library, but it does it in a questionable way in my opinion.
  
  Finally, they all lack good documentation and docstrings.
  
  Instead of reinventing the wheel, the *promise* library uses the powerful and very
  performant link:https://github.com/petkaantonov/bluebird/[bluebird] JavaScript
  promise library and includes it in the package as built in dependency (using
  ClojureScript `:foreign-libs` compiler option).
  
  It exposes a lightweight and idiomatic api for almost all methods and functions
  of the bluebird library. It also includes syntactic sugar for making the code
  resemble ES7 async/await syntax.
  
  
  === Project Maturity
  
negative.code: 
  (defn sleep-promise
    [wait]
    (p/promise (fn [resolve reject]
                 (p/schedule wait #(resolve wait)))))
  ----
  
  Let's see an example using `mlet` macro:
  
  [source, clojure]
  ----
  