pub async fn transfer_in_place_async(&mut self, words: &mut [u8]) -> Result<(), Error> {
        // We need to flush because the blocking transfer functions may return while a
        // transfer is still in progress.
        self.driver().flush_async().await?;
        self.driver().setup_full_duplex()?;
        self.driver().transfer_in_place_async(words).await
    }
Sends `words` to the slave. Returns the `words` received from the slave.

This function aborts the transfer when its Future is dropped. Some
amount of data may have been transferred before the Future is
dropped. Dropping the future may block for a short while to ensure
the transfer is aborted.
esp-hal/src/spi/master.rs