anchor.diff:               (resolve 1)))
   ----
   
  +An other way to create a promise is using a `do*` macro that works similar to the
  +factory callback with the excepion that for resolve the promise instead of calling
  +the `resolve` callback we just need to return the value:
  +
  +[source, clojure]
  +----
  +(p/do*
  +  (let [a (rand-int 10)
  +        b (rand-int 10)]
  +    (+ a b)))
  +----
  +
  +In `do*` blocks works similarly to the clojure `do` block, so you can put any
  +expressions but only the last one will be returned and that expression can be a
  +plain value or an other promise.
  +
  +If an exception is raised inside the `do*` block, it will return the rejected
  +promise instead of reraising the exception on the stack.
  +
  +
   [NOTE]
   ====
   In both platforms the promise factory function is executed synchrously and
  
positive.code: In some circumstances you will want wait a completion of few promises at same time,
  and _promesa_ also provides helpers for that.
  
  Imagine that you have a collection of promises and you want to wait until
  all of them are resolved. This can be done using the `all` combinator:
  
  [source, clojure]
  ----
  
negative.code: 
  [source,clojure]
  ----
  [funcool/promesa "1.3.0"]
  ----
  
  This package requires JDK8 if you are using it on the JVM platform and all
  enviroments that *bluebird* library supports on the JS platform.
  
  
  == User guide
  