code: function resolveAttributeBinding(oElement, oAttribute, oWithControl) {
  				var oPromise = getResolvedBinding(oAttribute.value, oElement, oWithControl, false);
  
  				if (!oPromise) {
  					debug(oElement, 'Binding not ready for attribute', oAttribute.name);
  					return oSyncPromiseResolved;
  				}
  				return oPromise.then(function (vValue) {
  					if (vValue === undefined) {
  						// if the formatter returns null, the value becomes undefined
  						// (the default value of _With.any)
  						debug(oElement, "Removed attribute", oAttribute.name);
  						oElement.removeAttributeNode(oAttribute);
  					} else if (vValue !== oAttribute.value) {
  						switch (typeof vValue) {
  						case "boolean":
  						case "number":
  						case "string":
  							debug(oElement, oAttribute.name, "=", vValue);
  							oAttribute.value = vValue;
  							break;
  
  						default: // e.g. "function" or "object"; "undefined": see above
  							debug(oElement, "Ignoring", fnToString.call(vValue),
  								"value for attribute", oAttribute.name);
  						}
  					}
  				}, function (oError) {
  					// just don't replace XML attribute value
  					debug(oElement, "Error in formatter of attribute", oAttribute.name, oError);
  				});
  			}
docs: Visit the given XML DOM attribute which represents any attribute of any element
  (other than template instructions). If the attribute value represents a binding
  expression, we try to resolve it using the "with" control instance.
  
  @param {Element} oElement
  the owning XML DOM element
  @param {Attr} oAttribute
  any XML DOM attribute node
  @param {sap.ui.core.util._with} oWithControl the "with" control
  @returns {sap.ui.base.SyncPromise}
  A sync promise which resolves with <code>undefined</code> as soon as the binding
  has been resolved, or is rejected with a corresponding error if getting the
  binding's value fails.