sig
  type +'a t
  type 'a deferred = 'Raw_deferred.t
  val of_ivar : 'Raw_ivar.t -> 'Raw_deferred.t
  val create : ('Raw_ivar.t -> unit) -> 'Raw_deferred.t
  val peek : 'Raw_deferred.t -> 'a option
  val is_determined : 'Raw_deferred.t -> bool
  val return : '-> 'Raw_deferred.t
  val upon : 'Raw_deferred.t -> ('-> unit) -> unit
  val upon' : 'Raw_deferred.t -> ('-> unit) -> Unregister.t
  val bind :
    'Raw_deferred.t -> ('-> 'Raw_deferred.t) -> 'Raw_deferred.t
  val install_removable_handler :
    'Raw_deferred.t -> 'Raw_handler.t -> Unregister.t
  val sexp_of_t :
    ('-> Sexplib.Sexp.t) -> 'Raw_deferred.t -> Sexplib.Sexp.t
end