code: function loadExtensionProvider(oController, bAsync) {
  			var sProviderName = Controller._sExtensionProvider.replace(/\./g, "/"),
  				oProvider = mExtensionProvider[sProviderName];
  			if (bAsync) {
  				return new Promise(function(resolve, reject) {
  					if (sProviderName) {
  						if (oProvider){
  							resolve(oProvider);
  						} else {
  							sap.ui.require([sProviderName], function(ExtensionProvider) {
  								oProvider = new ExtensionProvider();
  								mExtensionProvider[sProviderName] = oProvider;
  								resolve(oProvider);
  							});
  						}
  					} else {
  						resolve();
  					}
  				});
  			} else if (sProviderName) {
  				if (oProvider) {
  					return oProvider;
  				} else {
  					var ExtensionProvider = sap.ui.requireSync(sProviderName);
  					oProvider = new ExtensionProvider();
  					mExtensionProvider[sProviderName] = oProvider;
  					return oProvider;
  				}
  			}
  		}
docs: /* load extension provider
  
  @param {sap.ui.core.mvc.Controller} oController The controller instance
  @param {boolean} bAsync Load async or not
  @return {ExtensionProvider|Promise|undefined} ExtensionProvider <code>Promise</code> in case of asynchronous loading
  or the <code>ExtensionProvider</code> in case of synchronous loading or undefined in case no provider exists