withSessionFileLock<T> function
Runs op after every previously queued operation on filePath
completes. Never lets one failure poison the chain for later callers.
Implementation
Future<T> withSessionFileLock<T>(String filePath, Future<T> Function() op) {
final result = (_sessionFileOps[filePath] ?? Future<void>.value()).then(
(_) => op(),
);
_sessionFileOps[filePath] = result.then<void>((_) {}, onError: (Object _) {});
return result;
}