I'm confused here. Future { } makes what is in there lazy. Is that what you want? If no one forces the future, that is never called, right?

Don't you actually want to put this in a future pool with perhaps an async mutex?