    (extend-type CompletionStage
      mp/Contextual
      (-get-context [_] promise-context)
+
+     mp/Printable
+     (-repr [it]
+       (str "#<Promise ["
+            (cond
+              (p/-pending? it) "pending"
+              (p/-rejected? it) "rejected"
+              :else "resolved")
+            "]>"))
 
      mp/Extract
      (-extract [it]

     mp/Contextual
     (-get-context [_] promise-context)

     mp/Extract
     (-extract [it]
       (if (.isRejected it)

  (:require [cats.core :as m]
            [cats.context :as mc]
            [cats.protocols :as mp]
            [cats.util :as mutil]
            [promesa.protocols :as p]
            #?(:cljs [org.bluebird]))
  #?(:clj
