execPromiseQueueSequentially(aPromiseQueue, bThrowError, bAsync, bSuppressAdditionalErrorMessage) {
			if (aPromiseQueue.length === 0) {
				if (bAsync) {
					return Promise.resolve();
				}
				return (Utils.FakePromise ? new Utils.FakePromise() : Promise.resolve());
			}
			const fnPromise = aPromiseQueue.shift();
			if (typeof fnPromise === "function") {
				let vResult;
				try {
					vResult = fnPromise();
				} catch (e) {
					vResult = Promise.reject(e);
				}

				return vResult.then(function() {
					if (!bAsync && vResult instanceof Promise) {
						bAsync = true;
					}
				})
				.catch(function(e) {
					let sErrorMessage = "Error during execPromiseQueueSequentially processing occurred";
					sErrorMessage += e ? `: ${e.message}` : "";
					Log.error(sErrorMessage, e);

					if (bThrowError) {
						if (bSuppressAdditionalErrorMessage) {
							throw new Error(e.message);
						} else {
							throw new Error(sErrorMessage);
						}
					}
				})
				.then(function() {
					return this.execPromiseQueueSequentially(aPromiseQueue, bThrowError, bAsync, bSuppressAdditionalErrorMessage);
				}.bind(this));
			}

			Log.error("Changes could not be applied, promise not wrapped inside function.");
			return this.execPromiseQueueSequentially(aPromiseQueue, bThrowError, bAsync, bSuppressAdditionalErrorMessage);
		}
Execute the passed asynchronous / synchronous (Utils.FakePromise) functions serialized - one after the other.
By default errors do not break the sequential execution of the queue, but this can be changed with the parameter bThrowError.
Error message will be written in any case.

@param {array.<function>} aPromiseQueue - List of asynchronous functions that returns promises
@param {boolean} bThrowError - true: errors will be re-thrown and therefore break the execution
@param {boolean} bAsync - true: asynchronous processing with Promise, false: synchronous processing with FakePromise
@param {boolean} bSuppressAdditionalErrorMessage - true: additional error message will be suppressed
@returns {Promise} Returns empty resolved Promise or FakePromise when all passed promises inside functions have been executed