The restart scheduler uses exceptions for control flow (restarts/timeouts respectively). Functions here abstract away the semantics of when an exception can be ignored.
val try_finally : f:(unit ->'a)->finally:(unit -> unit)->'a
try_finally ~f ~finally executes f and then finally even if f raises an exception. Restart scheduler exceptions are handled as necessary.