public Promise()
        {
            CurState = PromiseState.Pending;
            Id       = Promise.NextId();

            if (Promise.EnablePromiseTracking)
            {
                Promise.pendingPromises.Add(this);
            }
        }
        public Promise(Action <Action <PromisedT>, Action <Exception> > resolver)
        {
            CurState = PromiseState.Pending;
            Id       = Promise.NextId();

            if (Promise.EnablePromiseTracking)
            {
                Promise.pendingPromises.Add(this);
            }

            try {
                resolver(
                    // Resolve
                    value => Resolve(value),

                    // Reject
                    ex => Reject(ex)
                    );
            } catch (Exception ex) {
                Reject(ex);
            }
        }