code: function exec( prop, action ) {
      if ( !prop.delay ) action();
      else {
          clearTimeout( prop.timeout );
          prop.timeout = setTimeout( action, prop.delay );
      }
  }
docs: Most  of  the  time,  `action` is  called  immediatly  without  any
  argument. But  you can configure  your property with a  `delay`. If
  you do so, the action is only called after this `delay`(in ms). The
  `action`can be lost  if another call to `exec()`  occurs before the
  end of the `delay` and the `delay` is reset.