src/index.js
function(type, listener) {
        checkListener(listener);

        var events = this.$e;
        var listeners;

        if (events && (listeners = events[type])) {
            if (isFunction(listeners)) {
                if (listeners === listener) {
                    delete events[type];
                }
            } else {
                for (var i=listeners.length-1; i>=0; i--) {
                    if (listeners[i] === listener) {
                        listeners.splice(i, 1);
                    }
                }
            }
        }

        return this;
    }
function(type, listener) {
        checkListener(listener);

        var events = this.$e;
        var listeners;

        if (events && (listeners = events[type])) {
            if (isFunction(listeners)) {
                if (listeners === listener) {
                    delete events[type];
                }
            } else {
                for (var i=listeners.length-1; i>=0; i--) {
                    if (listeners[i] === listener) {
                        listeners.splice(i, 1);
                    }
                }
            }
        }

        return this;
    }
function ( type , listener ) { checkListener ( listener ) ; var events = this . $e ; var listeners ; if ( events && ( listeners = events [ type ] ) ) { if ( isFunction ( listeners ) ) { if ( listeners === listener ) { delete events [ type ] ; } } else { for ( var i = listeners . length - 1 ; i >= 0 ; i -- ) { if ( listeners [ i ] === listener ) { listeners . splice ( i , 1 ) ; } } } } return this ; }
emits a 'removeListener' event iff the listener was removed
emits a removeListener event iff the listener was removed