public void sendThrow(Throwable throwable) {
        this.throwable = throwable;
        next();
    }
Because the Yield Adapter starts a separate thread for duration of the collection, this can
be left open if the calling code only reads part of the collection. If the iterator goes out
of scope, when it is GCed its finalize() will close the collection thread. However garbage
collection is sporadic and the VM will not trigger it simply because there is a lack of
available threads. So, if a lot of partial reads are happening, it will be wise to manually
close the iterator (which will clear the resources immediately).
jphp-runtime/src/php/runtime/util/generator/YieldAdapterIterator.java