public static void ExecuteWithPool()
        {
            Promise.Config.ObjectPooling = Promise.PoolType.All;
            var task = Execute();

            ProtoPromiseHelper.ResolveDeferreds();
            task.Wait();
        }
        private static void Execute()
        {
            Promise <object> .Deferred deferred = Promise.NewDeferred <object>();
            var promise = deferred.Promise;

            for (int i = 0; i < N; ++i)
            {
                promise = promise
                          .ContinueWith(i, (index, _) => ProtoPromiseHelper.protoVoids[index].Promise)
                          .ContinueWith(i, (index, _) => ProtoPromiseHelper.protoVectors[index].Promise)
                          .ContinueWith(i, (index, _) => ProtoPromiseHelper.protoObjects[index].Promise);
            }

            deferred.Resolve(Instances.obj);
            Promise.Manager.HandleCompletesAndProgress();
            ProtoPromiseHelper.ResolveDeferreds();
        }