Async JS bubble sort

HTML

<!--
bubble sort from: http://www.stoimen.com/blog/2010/07/09/friday-algorithms-javascript-bubble-sort/
-->
<script>
	updateDOM = true

	function createRandomArray(limit) {
		var arr = []
		for (var i=0, t=limit; i<t; i++) {
			arr.push(Math.round(Math.random() * t))
		}

		return arr
	}

	a = createRandomArray(50000)
	b = a.slice()

	function bubbleSort(a)
	{
		var swapped
		do {
			swapped = false
			for (var i=0; i < a.length-1; i++) {
				if (a[i] > a[i+1]) {
					var temp = a[i]
					a[i] = a[i+1]
					a[i+1] = temp
					swapped = true
				}
			}
		} while (swapped)
	}

	function stepThroughArray(a) {
		var swapped = false
		var counter = 0

		do{
			for (var i=0; i < a.length-1; i++) {
				if (a[i] > a[i+1]) {
					var temp = a[i]
					a[i] = a[i+1]
					a[i+1] = temp
					swapped = true
				}
			}

			counter = counter + 1
		} while(counter < 100)

		return swapped
	}

	function asyncBubbleSort(a) {
		window.setTimeout( () => {
			if(stepThroughArray(a))
				asyncBubbleSort(a)
			else {
				d2 = new Date()
				updateDOM = false
			}
		}, 0)
	}

	d3 = new Date()
	//bubbleSort(b)
	d4 = new Date()

	d1 = new Date()
	asyncBubbleSort(a)
</script>

<body>
	<p id="foo"></p>
	<input type="submit" value="Submit">

	<script>
	var inter = window.setInterval(() => {
		document.getElementById("foo").innerHTML = Math.round(Math.random() * 100)
		if(!updateDOM) {
			document.getElementById("foo").innerHTML = "t_SYNC: " + (d4-d3)/1000 + "s || " + "t_ASYNC: " + (d2-d1)/1000 + "s"
			window.clearInterval(inter)
		}
	}, 25)
	</script>
</body>