JavaScript には sleep や wait がない

皆んな困っています。

押すと 5秒後に色が変わります。5秒待つというだけで、厳密な sleep関数ではありません。また、後処理はすべて関数 f() の中で行う必要があります。

sleep(5000)

HTML

<div id="wait" style="color: green;">sleep(5000)</div>
<form><input type="button" value="変更" onclick="sleep()"></form>

JavaScript

function sleep() {window.setTimeout(f, 5000);}
function f() {
  document.getElementById("wait").style.color = "red";
}