public override Promise <U> Then <U> (Func <T, Promise <U> > done) { if (this.IsRejected) { return(Promises.Rejected <U>(exception)); } if (this.IsDisposed) { return(Promises.Disposed <U>()); } var deferred = new Deferred <U>(); Done(t => { try { done(t) .Done(u => deferred.Resolve(u)) .Fail(e => deferred.Reject(e)) .Disposed(() => deferred.Dispose()); } catch (Exception e) { deferred.Reject(e); } }); Fail(e => deferred.Reject(e)); Disposed(() => deferred.Dispose()); return(deferred); }
public Promise <T> Where(Predicate <T> condition) { return(Then(t => { if (condition(t)) { return Promises.Resolved(t); } else { return Promises.Disposed <T>(); } })); }