docs: function doAction() {
              var now = (new Date()).getTime();
              var diff = now - lastTapTime;
              var isDiffElemSafeDelay = elem !== lastElemTapped && diff > 200;
              var isSameElemSafeDelay = elem === lastElemTapped && diff > sameElemSafeDelay;
  
              if (tapped && (isDiffElemSafeDelay || isSameElemSafeDelay)) {
                  lastElemTapped = elem;
                  lastTapTime = now;
                  safeApply(action, scope);
              }
  
              // reset tapped at end
              tapped = false;
          }