code: function(scriptName, params) {
          var ctx = u.context(SMALL);
          logger.debugf('Invoke execute(msgId=%d,scriptName=%s,params=%s)', ctx.id, scriptName, u.str(params));
          // TODO update jsdoc, value does not need to be String, can be JSON too
          return futureExec(ctx, 0x2B, p.encodeNameParams(scriptName, params), p.decodeValue());
        }
docs: Script execution parameters.
  
  @typedef {Object} ExecParams
  @property {String} PARAM_NAME -
  Name of the parameter.
  @property {String} PARAM_VALUE -
  Value of the parameter.
  @since 0.3
   
  Execute the named script passing in optional parameters.
  
  @param {String} scriptName Name of the script to execute.
  @param {?ExecParams[]} params
  Optional array of named parameters to pass to script in server.
  @returns {module:promise.Promise<String|String[]>}
  A promise that will be completed with either the value returned by the
  script after execution for local scripts, or an array of values
  returned by the script when executed in multiple servers for
  distributed scripts.
  @memberof Client#
  @since 0.3