pub async fn lock(state: &Path, id: &str) -> Result<File, String>
Hold <sessionId>.lock until the returned file drops: sends to one session take turns.
<sessionId>.lock