switch to using onCompleteCallback, to make sure cleanup is called even if exception is thrown
fixup! switch
remove CleanupIterator as its no longer used