Optional
This function does NOT take into account messiness on timeout. The first garbage hole will be correct, but subsequent holes depend on whether or not garbage is cancelled.
Rest
This function does NOT take into account messiness on timeout. The first garbage hole will be correct, but subsequent holes depend on whether or not garbage is cancelled.