let queue = new ExpiringQueue(() => {
   let elements = queue.popAll();
   expect(elements).to.be.eql([1, 2, 3, 4]);
   elements = queue.popAll();
   expect(elements).to.have.lengthOf(0);
   expect(Date.now()).to.be.equal(200);
   done();
 }, 100);
    it('should notify after timeout period', (done) => {
      let queue = new ExpiringQueue(() => {
        let elements = queue.popAll();
        expect(elements).to.be.eql([1, 2, 3, 4]);
        elements = queue.popAll();
        expect(elements).to.have.lengthOf(0);
        expect(Date.now()).to.be.equal(200);
        done();
      }, 100);

      queue.push(1);
      setTimeout(() => {
        queue.push([2, 3]);
        timer.tick(50);
      }, 50);
      setTimeout(() => {
        queue.push([4]);
        timer.tick(100);
      }, 100);
      timer.tick(50);
    });
 setTimeout(() => {
   queue.push([4]);
   timer.tick(100);
 }, 100);
 setTimeout(() => {
   queue.push([2, 3]);
   timer.tick(50);
 }, 50);