Found it! Message objects are accumulating. Now we need to find WHY they're not being GC'd.
Objects aren't GC'd when something still holds a reference to them. Let's find the reference chain.
In Chrome DevTools: Click on a Message object in your snapshot, look at Retainers (shows the chain of references keeping it alive), find the root reference.
Common culprits for queue processors: Unclosed callbacks, event listeners that stack up, arrays or maps that store references, closures capturing objects.
Questions: Do you remove event listeners when done? Do you have any arrays or maps that store Message references? Are there closures capturing Message objects?
Can you share the retainer chain from DevTools so we can identify the exact cause?