'use strict'; var common = require('./common'); var EventEmitter = require('../'); var assert = require('assert'); var myEE = new EventEmitter(); var m = 0; // This one comes last. myEE.on('foo', common.mustCall(function () { assert.strictEqual(m, 2); })); // This one comes second. myEE.prependListener('foo', common.mustCall(function () { assert.strictEqual(m++, 1); })); // This one comes first. myEE.prependOnceListener('foo', common.mustCall(function () { assert.strictEqual(m++, 0); })); myEE.emit('foo'); // Verify that the listener must be a function assert.throws(function () { var ee = new EventEmitter(); ee.prependOnceListener('foo', null); }, 'TypeError: The "listener" argument must be of type Function. Received type object');