setTimeout llama a la función inmediatamente en lugar de después del retraso

Quiero hacer un valor en una página HTML que se actualizará cada 5 segundos para no abrumar al servidor. Resulta que setTimeout () dentro de mi función no se retrasa correctamente, sino que se llama de inmediato. ¿Alguien puede ayudarme a encontrar una pista? Realmente no quiero darle demasiado trabajo a mi servidor porque tengo que implementar mucho más AJAX.

Aquí está el código:

window.onload = function GetUsersNumber() {
    aside = document.getElementById("users");
    if (XMLHttpRequest) var x = new XMLHttpRequest();
    else var x = new ActiveXObject("Microsoft.XMLHTTP");
    x.open("GET", "users_count.php", true);
    x.send();
    x.onreadystatechange = function () {
        if (x.readyState == 4) {
            if (x.status == 200) aside.innerHTML = x.responseText;
            setTimeout(GetUsersNumber(), 50000);
        }
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta