withSessionFileLock<T> function

Future<T> withSessionFileLock<T>(
  1. String filePath,
  2. Future<T> op()
)

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;
}