sig
  val am_holding_async_lock : unit -> bool
  val deferred : unit -> 'Async_core.Deferred.t * ('-> unit)
  val run_in_async_with_optional_cycle :
    ?wakeup_scheduler:bool ->
    (unit -> [ `Do_not_run_a_cycle | `Run_a_cycle ] * 'a) ->
    ('a, exn) Core.Std.Result.t
  val run_in_async :
    ?wakeup_scheduler:bool -> (unit -> 'a) -> ('a, exn) Core.Std.Result.t
  val run_in_async_exn : ?wakeup_scheduler:bool -> (unit -> 'a) -> 'a
  val block_on_async :
    (unit -> 'Async_core.Deferred.t) -> ('a, exn) Core.Std.Result.t
  val block_on_async_exn : (unit -> 'Async_core.Deferred.t) -> 'a
  val run_in_async_wait :
    (unit -> 'Async_core.Deferred.t) -> ('a, exn) Core.Std.Result.t
  val run_in_async_wait_exn : (unit -> 'Async_core.Deferred.t) -> 'a
end