Lwt engine loop

Get rid of manual looping and use `Lwt_engine.on_timer`.
isnt this just clearer as `async (fun () -> ...)` ?