code: function(durationMs, args) {
        var p = promise();
        var id = setTimeout(function() {
          p['fire'](true, args);
        }, durationMs);
        p['stop0'] = function() { p['fire'](false); clearTimeout(id); };
        return p;
      }
docs: /#/snippet webDollarFuncs /#snippet extrasDollarFuncs /*$
  @id wait
  @group EVENTS
  @configurable default
  @requires promise
  @name $.wait()
  @syntax $.wait()
  @syntax $.wait(durationMs)
  @syntax $.wait(durationMs, args)
  @module WEB+UTIL
  
  Creates a new  ##promise#Promise## that will be fulfilled as soon as the specified number of milliseconds have passed. This is mainly useful for animation,
  because it allows you to chain delays into your animation chain.
  
  The operation can be interrupted by calling the promise's ##stop() function.
  
  @example Chained animation using Promise callbacks. The element is first moved to the position 200/0, then to 200/200, waits for 50ms
  and finally moves to 100/100.
  <pre>
  var div = $('#myMovingDiv').set({$left: '0px', $top: '0px'});
  div.animate({$left: '200px', $top: '0px'}, 600, 0)
  .then(function() {
  div.animate({$left: '200px', $top: '200px'}, 800, 0);
  }).then(function() {
  return _.wait(50);
  }).then(function() {
  div.animate({$left: '100px', $top: '100px'}, 400);
  });
  });
  </pre>
  
  
  @param durationMs optional the number of milliseconds to wait. If omitted, the promise will be fulfilled as soon as the browser can run it
  from the event loop.
  @param args optional an array or list of arguments to pass to the promise handler
  @return a ##promise#Promise## object that will be fulfilled when the time is over, or fail when the promise's ##stop() has been called.
  The promise argument of a fulfilled promise is the <var>args</var> parameter as given to <var>wait()</var>. The returned promise supports ##stop()
  to interrupt the promise.