lib/infinispan.js
function(event, listener, opts) {
        var ctx = u.context(SMALL);
        return _.has(opts, 'listenerId')
            ? addLocalListener(ctx, event, listener, opts)
            : addRemoteListener(ctx, event, listener, opts);
      }
function(event, listener, opts) {
        var ctx = u.context(SMALL);
        return _.has(opts, 'listenerId')
            ? addLocalListener(ctx, event, listener, opts)
            : addRemoteListener(ctx, event, listener, opts);
      }
function ( event , listener , opts ) { var ctx = u . context ( SMALL ) ; return _ . has ( opts , 'listenerId' ) ? addLocalListener ( ctx , event , listener , opts ) : addRemoteListener ( ctx , event , listener , opts ) ; }
Listener options.

@typedef {Object} ListenOptions
@property {String} listenerId - Listener identifier can be passed
in as parameter to register multiple event callback functions for
the same listener.
@since 0.3
 
Add an event listener.

@param {String} event
Event to add listener to. Possible values are:
'create', 'modify', 'remove' and 'expiry'.
@param {Function} listener
Function to invoke when the listener event is received.
'create' and 'modify' events callback the function with key,
entry version and listener id.
'remove' and 'expiry' events callback the function with key
and listener id.
@param opts {?ListenOptions} Options for adding listener.
@returns {module:promise.Promise<String>}
A promise that will be completed with the identifier of the listener.
This identifier can be used to register multiple callbacks with the
same listener, or to remove the listener.
@memberof Client#
@since 0.3
Listener options .