function initPreprocessor(oPreprocessor, bAsync) {
		var oPreprocessorImpl;

		if (typeof oPreprocessor.preprocessor === "string") {
			var sPreprocessorName = oPreprocessor.preprocessor.replace(/\./g, "/");
			// module string given, resolve and retrieve object
			if (bAsync) {
				 return new Promise(function(resolve, reject) {
					sap.ui.require([sPreprocessorName], function(oPreprocessorImpl) {
						resolve(oPreprocessorImpl);
					}, reject);
				});
			} else {
				return sap.ui.requireSync(sPreprocessorName); // legacy-relevant: Sync path
			}
		} else if (typeof oPreprocessor.preprocessor === "function" && !oPreprocessor.preprocessor.process) {
			oPreprocessorImpl = {
				process: oPreprocessor.preprocessor
			};
		} else {
			oPreprocessorImpl = oPreprocessor.preprocessor;
		}

		if (bAsync) {
			return Promise.resolve(oPreprocessorImpl);
		} else {
			return oPreprocessorImpl;
		}
	}
resolves either the module dependency or the function which was passed to settings to the internal
preprocessor config object

@param {object} oPreprocessor Preprocessor config object
@param {boolean} bAsync Whether processing is async or not
@return {object} oPreprocessorImpl
@private
@ui5-transform-hint replace-param bAsync true