pub async fn available(&mut self) -> Result<usize, Error> {
            loop {
                self.state.update()?;

                let res = self.state.available;

                if res != 0 {
                    break Ok(res);
                }

                DmaRxDoneChFuture::new(&mut self.i2s_rx.rx_channel).await?;
            }
        }
How many bytes can be popped from the DMA transaction.
Will wait for more than 0 bytes available.
esp-hal/src/i2s/master.rs