static ISleeper defaultSleeper() { ret new ISleeper { //Set timers = weakSet(); public Sleeping doLater(Timestamp targetSysTime, Runnable r) { var timer = main doLater(max(0, targetSysTime.unixDate()-sysNow()), r); ret new Sleeping(targetTime, r) { close { timer->cancel(); timer = null; } }; } public void close() { //cancelTimer(timer); } }; }