Promises and event-driven I/O for OCaml
