code: function addForgettableCallback(event, callback, listenerId) {
  
      // listenerId is optional and if not given, the original
      // callback will be used
      listenerId = listenerId || callback;
  
      var safeCallback = protectedCallback(callback);
  
      event.on( function() {
  
        var discard = false;
  
        oboeApi.forget = function(){
          discard = true;
        };
  
        apply( arguments, safeCallback );
  
        delete oboeApi.forget;
  
        if( discard ) {
          event.un(listenerId);
        }
      }, listenerId);
  
      return oboeApi; // chaining
    }
docs: Add a callback where, if .forget() is called during the callback's
  execution, the callback will be de-registered