    sig
      type 'a channel
      val new_channel : unit -> 'a Event.channel
      type 'a event
      val send : 'a Event.channel -> 'a -> unit Event.event
      val receive : 'a Event.channel -> 'a Event.event
      val always : 'a -> 'a Event.event
      val choose : 'a Event.event list -> 'a Event.event
      val wrap : 'a Event.event -> ('a -> 'b) -> 'b Event.event
      val wrap_abort : 'a Event.event -> (unit -> unit) -> 'a Event.event
      val guard : (unit -> 'a Event.event) -> 'a Event.event
      val sync : 'a Event.event -> 'a
      val select : 'a Event.event list -> 'a
      val poll : 'a Event.event -> 'a option
    end