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