sig
  type +'a t
  val create : ('Ivar.ivar -> unit) -> 'Ivar.Deferred.t
  val peek : 'Ivar.Deferred.t -> 'a option
  val is_determined : 'Ivar.Deferred.t -> bool
  val return : '-> 'Ivar.Deferred.t
  val upon : 'Ivar.Deferred.t -> ('-> unit) -> unit
  val upon' : 'Ivar.Deferred.t -> ('-> unit) -> Unregister.t
  val bind :
    'Ivar.Deferred.t -> ('-> 'Ivar.Deferred.t) -> 'Ivar.Deferred.t
  val install_removable_handler :
    'Ivar.Deferred.t -> 'Raw_handler.t -> Unregister.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Ivar.Deferred.t -> Sexplib.Sexp.t
end