cómo hacer que Javascript setTimeout devuelva valor en una función

Tengo una función que llama a algún servicio y devuelve la respuesta. Si la respuesta es FALSA, espera 1 segundo para volver a solicitar el servicio (que probablemente devuelva VERDADERO).

¿Cómo puedo hacer para llamar a mi función "checkService ()" una vez y obtener el valor real? (el primer o segundo intento, decidido por la función) Configuré el valor RET dentro de la función, pero las funciones siempre devuelven el primer RET, porque setTimeout es asíncrono.

En otras palabras, necesito algún truco de "sueño", o cualquier solución (también puede ser jQuery).

function checkService() {

  //this may return TRUE or FALSE
  var RET = someServiceResponse(); 

  // here waits 1 second, then ask the service again
  if( RET == true ) {
    return true;
  } else {

    setTimeout(
        function() {
            //it must return the second response of the service
            RET = someServiceResponse();  
        }, 
        1000
    );

    // I want the checkService() return the response after de timeout
    return RET;  
  }
}

function alertResponse() {
    alert( checkService() );
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta