Currently, Zend ASYNC uses a complex GC implementation, which is difficult to read and maintain.
There is an idea to try a different version.
- GC runs in its own coroutine.
- GC creates another coroutine to run destructors.
- The GC coroutine waits until the destructor coroutine finishes its work.