function asyncStrategy(node, oAggregation, mAggregations, pRequireContext, oClosestBinding) {
			var childNode,
				pChain = Promise.resolve(),
				aChildPromises = [pRequireContext];

			for (childNode = node.firstChild; childNode; childNode = childNode.nextSibling) {
				pChain = pChain.then(fnCallback.bind(null, node, oAggregation, mAggregations, childNode, false, pRequireContext, oClosestBinding));
				aChildPromises.push(pChain);
			}
			return Promise.all(aChildPromises);
		}
// async strategy ensures processing order by chaining the callbacks
async strategy ensures processing order by chaining the callbacks
async strategy ensures processing order by chaining the callbacks
function asyncStrategy(node, oAggregation, mAggregations, pRequireContext, oClosestBinding) {
			var childNode,
				pChain = Promise.resolve(),
				aChildPromises = [pRequireContext];
			for (childNode = node.firstChild; childNode; childNode = childNode.nextSibling) {
				pChain = pChain.then(fnCallback.bind(null, node, oAggregation, mAggregations, childNode, false, pRequireContext, oClosestBinding));
				aChildPromises.push(pChain);
			}
			return Promise.all(aChildPromises);
		}
function asyncStrategy ( node , oAggregation , mAggregations , pRequireContext , oClosestBinding ) { var childNode , pChain = Promise . resolve ( ) , aChildPromises = [ pRequireContext ] ; for ( childNode = node . firstChild ; childNode ; childNode = childNode . nextSibling ) { pChain = pChain . then ( fnCallback . bind ( null , node , oAggregation , mAggregations , childNode , false , pRequireContext , oClosestBinding ) ) ; aChildPromises . push ( pChain ) ; } return Promise . all ( aChildPromises ) ; }
async strategy ensures processing order by chaining the callbacks
async strategy ensures processing order by chaining the callbacks