odbS3BackendReadCallback now uses consume, not await