Convertendo milissegundos em minutos e segundos com Javascript

A API do Soundcloud fornece a duração de suas trilhas em milissegundos. JSON é assim:

"duration": 298999

Eu tentei muitas funções que encontrei aqui sem sucesso. Estou apenas procurando algo para converter esse número para algo como isto:

4:59

Aqui está um que chegou perto, mas não funciona. Ele não para os segundos aos 60. Vai até 99, o que não faz sentido. Tente inserir "187810" como um valor de ms, por exemplo.

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

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

Obrigado pela ajuda!

Se você também pudesse adicionar suporte por horas, ficaria muito grato.

questionAnswers(5)

yourAnswerToTheQuestion