dist/emitter-umd.js
function addConditionalEventListener(emitter, type, listener) {

        function conditionalListener() {
            var done = listener.apply(emitter, arguments);
            if (done === true) {
                removeEventListener(emitter, type, conditionalListener);
            }
        }

        // TODO Check beyond just one level of listener references
        conditionalListener.listener = listener.listener || listener;

        addEventListener(emitter, type, conditionalListener, NaN);
    }
function addConditionalEventListener(emitter, type, listener) {

        function conditionalListener() {
            var done = listener.apply(emitter, arguments);
            if (done === true) {
                removeEventListener(emitter, type, conditionalListener);
            }
        }

        // TODO Check beyond just one level of listener references
        conditionalListener.listener = listener.listener || listener;

        addEventListener(emitter, type, conditionalListener, NaN);
    }
function addConditionalEventListener ( emitter , type , listener ) { function conditionalListener ( ) { var done = listener . apply ( emitter , arguments ) ; if ( done === true ) { removeEventListener ( emitter , type , conditionalListener ) ; } } // TODO Check beyond just one level of listener references conditionalListener . listener = listener . listener || listener ; addEventListener ( emitter , type , conditionalListener , NaN ) ; }
Many of these functions are broken out from the prototype for the sake of optimization. The functions on the protoytype take a variable number of arguments and can be deoptimized as a result. These functions have a fixed number of arguments and therefore do not get deoptimized. 
@function Emitter~addConditionalEventListener
@param {Emitter} emitter The emitter on which the event would be emitted.
@param {EventType} type The event type.
@param {EventListener} listener The event callback.
Many of these functions are broken out from the prototype for the sake of optimization . The functions on the protoytype take a variable number of arguments and can be deoptimized as a result . These functions have a fixed number of arguments and therefore do not get deoptimized .