code: function stopAndGo(aElements, fnCallback) {
  		var i = -1;
  
  		/*
  		 * Visits the next element, taking the result of the previous callback into account.
  		 *
  		 * @param {boolean} bFound
  		 *   Whether an element was approved by the corresponding callback
  		 * @returns {sap.ui.base.SyncPromise|any}
  		 *   First call returns a <code>sap.ui.base.SyncPromise</code> which resolves with a later
  		 *   call's result.
  		 */
  		function next(bFound) {
  			if (bFound) {
  				return aElements[i];
  			}
  			i += 1;
  			if (i < aElements.length) {
  				return fnCallback(aElements[i], i, aElements).then(next);
  			}
  		}
  
  		return aElements.length
  			? next()
  			: oSyncPromiseResolved;
  	}
docs: Visits the given elements one-by-one, calls the given callback for each of them and stops
  and waits for each sync promise returned by the callback before going on to the next element.
  If a sync promise resolves with a truthy value, iteration stops and the corresponding element
  becomes the result of the returned sync promise.
  
  @param {any[]} aElements
  Whatever elements we want to visit
  @param {function} fnCallback
  A function to be called with a single element and its index and the array (like
  {@link Array#find} does it), returning a {@link sap.ui.base.SyncPromise}.
  @returns {sap.ui.base.SyncPromise}
  A sync promise which resolves with the first element where the callback's sync promise
  resolved with a truthy value, or resolves with <code>undefined</code> as soon as the last
  callback's sync promise has resolved, or is rejected with a corresponding error if any
  callback returns a rejected sync promise or throws an error
  @throws {Error}
  If the first callback throws