docs: function suspendListener(obj, eventName, target, method, callback) {
    if (!method && 'function' === typeof target) {
      method = target;
      target = null;
    }
  
    var actions = actionsFor(obj, eventName),
        actionIndex = indexOf(actions, target, method),
        action;
  
    if (actionIndex !== -1) {
      action = actions[actionIndex].slice(); // copy it, otherwise we're modifying a shared object
      action[3] = true; // mark the action as suspended
      actions[actionIndex] = action; // replace the shared object with our copy
    }
  
    function tryable()   { return callback.call(target); }
    function finalizer() { if (action) { action[3] = undefined; } }
  
    return Ember.tryFinally(tryable, finalizer);
  }