public async Task Save(object @event) { ApplyEvent(@event); _stream.HeadRevision += 1; var commit = new Commit(_streamId, @event, _stream.HeadRevision); await _streamManager.AddCommit(commit); _stream.UnsnapshottedCommits += 1; if (_stream.UnsnapshottedCommits == CommitsBeforeSnapshot) { _stream.SnapshotRevision += 1; var snapshot = new Snapshot(_streamId, _stream.SnapshotRevision, _stream.HeadRevision, AggregateDataStructure); await _streamManager.AddSnapshot(snapshot); _stream.UnsnapshottedCommits = 0; } await _streamManager.UpsertStream(_stream); }