pub async fn get(&mut self) -> Result<SomeRef<'_, T>, RecvError> {
        let recv = self.0.wait_for(|f| f.is_some()).await?;
        Ok(SomeRef(recv))
    }
Wait for the value to be available and then return it.

If you receive a `RecvError`, the sender has been dropped, meaning you
will not receive any more updates. For efficiencies sake, you should
exit the task and drop any senders to other dependencies so that the
exit can propagate up the chain.
crates/turborepo-filewatch/src/optional_watch.rs