sig
  type ('a, 'b) task = {
    priority : 'a;
    events : 'b list;
    handler : 'b list -> ('a, 'b) Duppy.Task.task list;
  }
  type event =
      [ `Delay of float
      | `Exception of Unix.file_descr
      | `Read of Unix.file_descr
      | `Write of Unix.file_descr ]
  val add :
    'Duppy.scheduler -> ('a, [< Duppy.Task.event ]) Duppy.Task.task -> unit
end