src/vs/base/parts/ipc/common/ipc.net.ts/BufferedEmitter/constructor
class BufferedEmitter:	constructor() {
		this._emitter = new Emitter<T>({
			onFirstListenerAdd: () => {
				this._hasListeners = true;
				// it is important to deliver these messages after this call, but before
				// other messages have a chance to be received (to guarantee in order delivery)
				// that's why we're using here queueMicrotask and not other types of timeouts
				queueMicrotask(() => this._deliverMessages());
			},
			onLastListenerRemove: () => {
				this._hasListeners = false;
			}
		});

		this.event = this._emitter.event;
	}