1254
return Disposable.None;
1255
}
1257
>
if (this._disposed) {
1258
// todo: should we warn if a listener is added to a disposed emitter? This happens often
1259
return Disposable.None;
1260
}
1262
>
if (thisArgs) {
1263
callback = callback.bind(thisArgs);
1264
}
1266
>
const contained = new UniqueContainer(callback);
1267
>
1268
>
let removeMonitor: Function | undefined;
1269
>
let stack: Stacktrace | undefined;
1270
>
if (this._leakageMon && this._size >= Math.ceil(this._leakageMon.threshold * 0.2)) {
1271
// check and record this emitter for potential leakage
1272
contained.stack = Stacktrace.create();
1273
removeMonitor = this._leakageMon.check(contained.stack, this._size + 1);
1274
}
1276
>
if (_enableDisposeWithListenerWarning) {
1277
contained.stack = stack ?? Stacktrace.create();
1278
}
1280
>
if (!this._listeners) {
1281
>
this._options?.onWillAddFirstListener?.(this);
1282
>
this._listeners = contained;
1283
>
this._options?.onDidAddFirstListener?.(this);
1284
>
} else if (this._listeners instanceof UniqueContainer) {
1285
this._deliveryQueue ??= new EventDeliveryQueuePrivate();
1286
this._listeners = [this._listeners, contained];