docs: function(client, stopProcessingCallback, callback) {
    logger.entry('stopMessenger', client.id);
    logger.log('parms', client.id, 'stopProcessingCallback:',
               stopProcessingCallback);
    logger.log('parms', client.id, 'callback:', callback);
  
    var cb = function() {
      if (stopProcessingCallback) {
        stopProcessingCallback(client, callback);
      }
    };
  
    // If messenger available then request it to stop
    // (otherwise it must have already been stopped)
    try {
      if (client._messenger) {
        logger.log('debug', client.id, 'disconnecting messenger');
        client._messenger.disconnect().then(function() {
          logger.log('debug', client.id, 'messenger disconnected');
          process.nextTick(cb);
        }).catch(function(err) {
          logger.caught('stopMessenger', client.id, err);
          callback(err);
        }).error(function(err) {
          logger.caught('stopMessenger', client.id, err);
          callback(err);
        });
      } else {
        logger.log('debug', client.id, 'no active messenger to stop');
        cb();
      }
    } catch (err) {
      console.error(util.inspect(err, true));
    }
  
    logger.exit('stopMessenger', client.id);
  }