val create : unit -> 'a t * ('a -> unit)
val await : 'a t -> ('a -> unit) -> unit
val value : 'a t -> 'a option
val map : ('a -> 'b) -> 'a t -> 'b t
val bind : 'a t -> ('a -> 'b t) -> 'b t
val pair : 'a t -> 'b t -> ('a * 'b) t
val of_list : 'a t list -> 'a list t