EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+EventEmitter.prototype.once = function (type, listener) {
+ var self = this;
+ self.on(type, function g () {
+ self.removeListener(type, g);
+ listener.apply(this, arguments);
+ });
+};
+
EventEmitter.prototype.removeListener = function (type, listener) {
if ('function' !== typeof listener) {
throw new Error('removeListener only takes instances of Function');
this._events[type] = [this._events[type]];
}
return this._events[type];
-};
\ No newline at end of file
+};
--- /dev/null
+common = require("../common");
+assert = common.assert
+var events = require('events');
+
+var e = new events.EventEmitter();
+var times_hello_emited = 0;
+
+e.once("hello", function (a, b) {
+ times_hello_emited++;
+});
+
+e.emit("hello", "a", "b");
+e.emit("hello", "a", "b");
+e.emit("hello", "a", "b");
+e.emit("hello", "a", "b");
+
+process.addListener("exit", function () {
+ assert.equal(1, times_hello_emited);
+});
+