code: function wrapTimerHandler(vHandler) {
  				var fnWrappedHandler = function() {
  					var aArgs, fnHandler;
  					if (bPromisesQueued) {
  						aArgs = [fnWrappedHandler, 0].concat(arguments);
  						_timeout.apply(window, aArgs);
  					} else {
  						fnHandler = typeof vHandler !== "function" ? new Function(vHandler) : vHandler; // eslint-disable-line no-new-func
  						fnHandler.apply(window, arguments);
  					}
  				};
  				return fnWrappedHandler;
  			}
docs: If there are promise handlers waiting for execution at the time the timeout fires, start another timeout to postpone timer execution after promise execution.