Como você envolve setTimeout em uma promessa

Estou tentando executar um conjunto de testes para um objeto que retorna uma promessa. Quero encadear várias ações juntamente com curtos tempos limite entre elas. Eu pensei que uma chamada "então" que retornasse uma promessa esperaria que a promessa fosse cumprida antes de disparar a próxima chamada em cadeia.

Eu criei uma função

function promiseTimeout (time) {
  return new Promise(function(resolve,reject){
    setTimeout(function(){resolve(time);},time);
  });
};

para tentar envolver setTimeout em uma promessa.

Então, na minha suíte de testes, estou chamando algo assim ...

    it('should restore state when browser back button is used',function(done){
      r.domOK().then(function(){
        xh.fire('akc-route-change','/user/4/profile/new');
      }).then(promiseTimeout(2000)).then(function(t){
        xu.fire('akc-route-change','/user/6');
      }).then(promiseTimeout(10)).then(function(t){
        expect(xu.params[0]).to.equal(6);
        history.back();
      }).then(promiseTimeout(10)).then(function(){
        expect(xu.params[0]).to.equal(4);
        done();
      });
    });

Eu posso colocar um ponto de interrupção no primeiroxh.fire chamar e um segundo noxu.fire e esperaria um intervalo de dois segundos quando a continuar do primeiro ponto de interrupção para o segundo.

Em vez disso, atinge o segundo ponto de interrupção imediatamente e o valor det nesse ponto é indefinido.

O que estou fazendo errado?

questionAnswers(5)

yourAnswerToTheQuestion