only call cargo.drain once each time it's drained