index/classes/ListenerCleanupManager.md
Listener Cleanup Manager
Multi-stage cleanup with error isolation per listener. Ensures cleanup of one listener doesn't block cleanup of others.
Features:
- Error isolation (one failure doesn't block others)
- Async cleanup support (waitPromises)
- Ordering (LIFO - last registered, first cleaned up)
- Detailed error logging
Example
// Test case: Multi-stage listener cleanup
const manager = new ListenerCleanupManager();
const cleaned: string[] = [];
// Register listeners with cleanup functions
manager.register('listener1', () => {
cleaned.push('1');
});
manager.register('listener2', () => {
cleaned.push('2');
});
manager.register('listener3', () => {
throw new Error('Cleanup failed for 3');
});
manager.register('listener4', () => {
cleaned.push('4');
});
// Cleanup all (error in listener3 doesn't block listener4)
await manager.cleanup();
// All listeners cleaned up despite error in listener3
console.assert(cleaned.includes('1'));
console.assert(cleaned.includes('2'));
console.assert(cleaned.includes('4'));
// Order is LIFO: 4, 3 (error), 2, 1
Since
6.6.0
Constructors
Constructor
new ListenerCleanupManager(
logger?):ListenerCleanupManager
Parameters
| Parameter | Type |
|---|---|
logger? | Logger |
Returns
ListenerCleanupManager
listener cleanup manager
Accessors
size
Get Signature
get size():
number
Get count of registered listeners
Returns
number
Number of listeners awaiting cleanup
Methods
cleanup()
cleanup():
Promise<Error[]>
Cleanup all listeners
Errors in one listener don't prevent cleanup of others. Returns array of errors encountered during cleanup.
Returns
Promise<Error[]>
Promise that resolves when all cleanup complete
clear()
clear():
void
Clear all registered listeners without calling cleanup
Returns
void
register()
register(
id,cleanup):void
Register a listener with cleanup function
Cleanup functions are called in LIFO order (last registered, first cleaned up).
Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Unique identifier for this listener |
cleanup | () => void | Promise<void> | Sync or async cleanup function |
Returns
void