anchor.diff:  === Introduction
   
   The promise is the abstraction that represents the result of an asynchronous
  -operation that will be eventually available.
  -
  -It can be on this states:
  +operation that has the notion of error.
  +
  +This is a list of possible states of one promise:
   
   - `resolved`: means that the promise contains a value.
   - `rejected`: means thet the promise contains an error.
   - `pending`: means that the promise does not have value.
   
  +The promise can be considered *done* when is resolved or rejected.
  +
   
   === Creating a promise
   
  -It there several different ways to create a promise in _promesa_ library. You can
  -create it already resolved with initial value or already rejected with an exception.
  -
  -Let start creating a promise from a plain value:
  -
  +It there several different ways to create a promise instance:
  +
  +.Example creating already resolved promise instances from plain values.
   [source, clojure]
   ----
   (require '[promesa.core :as p])
  
positive.code: ----
  (let [p (p/all [(do-some-io)
                  (do-some-other-io)])]
    (p/then p (fn [[result1 result2]
                (do-something-with-results result1 result2))))
  ----
  
  
negative.code:   [wait]
    (p/promise (fn [resolve reject]
                 (p/schedule wait #(resolve wait)))))
  
  (def result
    (p/alet [x (p/await (sleep-promise 42))
             y (p/await (sleep-promise 41))
             z 2]
      (+ x y z)))
  
  @result     ; only on the jvm
  ;; => 85
  ----
  
  The `alet` macro behaves identical to the `let` with the exception that it
  