code: function moduleCallStableId (data) {
      // get clone of data before modifying
      data = _.cloneDeep(data)
      // require data to be object
      data = requireValidOptionalObject(data)
      // require args to be object
      data.args = requireValidOptionalObject(data.args)
      // require session to be object
      data.args.session = requireValidOptionalObject(data.args.session)
      // require stack to be array
      data.args.session.stack = requireValidOptionalArray(data.args.session.stack)
      // build object with only the deterministic properties of module call data
      var stableData = _.pick(data, ['methodName', 'moduleName'])
      // get all args except for the session
      stableData.args = _.omit(data.args, 'session')
      // get only the deterministic properties of session
      stableData.args.session = _.pick(data.args.session, ['requestId', 'sessionId', 'stack'])
      // generate 128bit hex id of stable stringified data
      var stableIdWithData = stableId(stableData, true)
      // reture id string
      return stableIdWithData.id
  }
docs: @function moduleCallStableId
  
  generate a stable id for module call data
  
  @param {object} data
  
  @returns {string}
  
  @throws {Error}