Convertir milisegundos en minutos y segundos con Javascript

La API de Soundcloud da la duración de sus pistas en milisegundos. JSON se ve así:

"duration": 298999

He intentado muchas funciones que encontré aquí en vano. Solo estoy buscando algo para convertir ese número en algo como esto:

4:59

Aquí hay uno que se acercó, pero no funciona. No detiene los segundos a 60. Va hasta 99, lo que no tiene sentido. Intente ingresar "187810" como un valor de ms, por ejemplo.

var ms = 298999,
min = Math.floor((ms/1000/60) << 0),
sec = Math.floor((ms/1000) % 60);

console.log(min + ':' + sec);

¡Gracias por tu ayuda!

Si pudieras agregar soporte por horas, también te lo agradecería.

Respuestas a la pregunta(3)

Su respuesta a la pregunta