(**************************************************************************) (* *) (* Copyright (c) 2014 - 2016. *) (* Dynamic Ledger Solutions, Inc. *) (* *) (* All rights reserved. No warranty, explicit or implicit, provided. *) (* *) (**************************************************************************) exception Exit let termination_thread, exit_wakener = Lwt.wait () let exit x = Lwt.wakeup exit_wakener x; raise Exit let () = Lwt.async_exception_hook := (function | Exit -> () | exn -> Printf.eprintf "Uncaught (asynchronous) exception: %S\n%s\n%!" (Printexc.to_string exn) (Printexc.get_backtrace ()); Lwt.wakeup exit_wakener 1)