package ru.m; import hw.signal.Signal; import promhx.Deferred; import promhx.Promise; class SignalUtil { public static function next(signal:Signal):Promise { var d:Deferred = new Deferred(); var receiver:T->Void; receiver = (value:T) -> { signal.disconnect(receiver); d.resolve(value); }; signal.connect(receiver); return d.promise(); } }