I introduced a regression in D9175. The issue is detailed in this Linear comment thread, but basically there's a possibility of dbIDs being non-empty when it's checked, but empty by the time the query is run.
The core issue here is that we're not waiting for the code that dequeues from dbIDs to complete before checking (and running) the cleanup query. This diff makes sure we wait until deliveryPromises are all resolved before checking and running the cleanup query.