Una implementazione usando le promises:

codice:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Javascript sleep using promises</title>
<script type="text/javascript">
function sleep(ms) {
  return new Promise(resolve=>setTimeout(resolve,ms));
}
async function demo() {
	for(var i=0; i<3; i++){
		alert(i+' of 2');
		await sleep(5000)
	}
}
demo();
</script>
</head>
<body>
</body>
</html>