pub async fn write_read_async<A: Into<I2cAddress>>(
        &mut self,
        address: A,
        write_buffer: &[u8],
        read_buffer: &mut [u8],
    ) -> Result<(), Error> {
        self.transaction_async(
            address,
            &mut [Operation::Write(write_buffer), Operation::Read(read_buffer)],
        )
        .await
    }
Writes bytes to slave with given `address` and then reads enough
bytes to fill `buffer` *in a single transaction*

# Errors

The corresponding error variant from [`Error`] will be returned if the
passed buffer has zero length.
esp-hal/src/i2c/master/mod.rs