using System; namespace Implab { public interface IPromise : IPromise { new T Join(); new T Join(int timeout); IPromise On(Action success, Action error, Action cancel); IPromise On(Action success, Action error); IPromise On(Action success); new IPromise On(Action handler, PromiseEventType events); IPromise Then(Func mapper, Func error, Func cancel); IPromise Then(Func mapper, Func error); IPromise Then(Func mapper); IPromise Chain(Func> chained, Func> error, Func> cancel); IPromise Chain(Func> chained, Func> error); IPromise Chain(Func> chained); IPromise Error(Func error); IPromise Cancelled(Func handler); } }