anchor.diff:  ;; => #<Promise [~]>
   ----
   
  +If you just want to create a promise with a value, you can use the
  +`promise` function:
  +
  +[source, clojure]
  +----
  +;; creates a promise from value
  +(p/promise 1)
  +
  +;; creates a rejected promise
  +(p/promise (ex-info "error" {}))
  +----
  +
  +The `promise` consturctor function automatcially coerce the value to
  +the approprite promise, returning rejected promises for exceptions and
  +resolved promises for the rest of values.
  +
   Another option is to create an empty promise using the `deferred` function
   and provide the value asynchronously using `p/resolve!` and `p/reject!`:
   
  
positive.code: [source, clojure]
  ----
  @(-> (p/delay 100 1)
       (p/then inc)
       (p/then inc))
  ;; => 3
  ----
  
  
negative.code:     p))
  ----
  
  Another option is using a factory function. If you are familiar with
  JavaScript, there is a similar approach.
  
  .Example creating a promise instance using a factory.
  [source, clojure]
  ----
  @(p/create (fn [resolve reject] (resolve 1)))
  ;; => 1
  ----
  
  