It would be delphi incompatible, and only complicate matters once anonymous methods is done.
I myself still use the same scheme I used during D7, a pool of objects and a queue, and then synchronize draining the queue.
The only change is that generics it is easier to instantiate them typesafe.