@mozsquib: trying to wrap my head around the kind of API you are imagining. For API symmetry, do you mean an API on folderConn that is like acquireConn() that hides _deathback setting? I think it is complicated by the jobs wanting to push onto _heldMutexReleasers, something it owns, that folder does not have knowledge about. Here is an initial shot of my interpretation of your guidance, but I could be totally off:

```javascript

  ////////////////////////////////
  //In activesync/jobs.js
  _accessFolderForMutation: function(folderId, needConn, callback, deathback,
                                     label) {
    var storage = this.account.getFolderStorageForFolderId(folderId),
        self = this;
    storage.runMutexed(label, function(releaseMutex) {

      var action = function () {
        self._heldMutexReleasers.push(releaseMutex);
        try {
          callback(syncer.folderConn, storage);
        }
        catch (ex) {
          self._LOG.callbackErr(ex);
        }
      };

      if (needConn) {
        syncer.folderConn.withConnection(function () {
          self._heldMutexReleasers.push(function() {
            self.folderConn.resetErrorHandling();
          });
          action();
        }, deathback, label);
      } else {
        action();
      }
    });
  },

  ////////////////////////////////
  //In activesync/folder.js
  withConnection: function (callback, deathback, label) {
    if (!this._conn) {
      this.acquireConn(function () {
        this.withConnection(callback, deathback, label);
      }.bind(this), deathback, label);
      return;
    }

    this._deathback = deathback;
    callback(this);
  },

  //Also in activesync/folder.js
  resetErrorHandling: function () {
    this._deathback = null;
  }

```