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