turns out queue_free() does not immediatly delete the object. the logic i made did not account for objects continuing past the queue_free() call.