local record lib ready : function () : boolean waiter : function (num : integer, allow_many : boolean) : function (), function () guarder : function () : function (id : function ()) : function () | nil record runner_t func : function (T) thread : thread enum state_e -- from Lua manual "running" "suspended" "normal" "dead" -- from util.async "ready" "error" end state : state_e notified_state : state_e queue : { T } type watcher_t = function (runner_t, ... : any) type watchers_t = { state_e : watcher_t } data : any id : string run : function (runner_t, T) : boolean, state_e, integer enqueue : function (runner_t, T) : runner_t log : function (runner_t, string, string, ... : any) onready : function (runner_t, function) : runner_t onready : function (runner_t, function) : runner_t onwaiting : function (runner_t, function) : runner_t onerror : function (runner_t, function) : runner_t end runner : function (function (T), runner_t.watchers_t, any) : runner_t wait_for : function (any) : any, any sleep : function (t:number) -- set_nexttick = function(new_next_tick) next_tick = new_next_tick; end; -- set_schedule_function = function (new_schedule_function) schedule_task = new_schedule_function; end; end return lib