public Task TrackAsync(IEventTrackExtension eventTrackExtension, SmallTalks.Core.Models.Analysis analysis, Func <string, EventTrack> eventTrackFactory, bool fireAndForget = default, CancellationToken cancellationToken = default)
        {
            var trackings = analysis.Matches.Select(m => eventTrackFactory.Invoke(m.SmallTalk));

            var trackingTasks = trackings.Select(t => eventTrackExtension.AddAsync(t.Category.Trim(), t.Action, extras: t.Extras,
                                                                                   contactIdentity: t.Contact?.Identity, fireAndForget: fireAndForget, cancellationToken: cancellationToken));

            return(Task.WhenAll(trackingTasks));
        }
 public Task TrackAsync(ISender sender, SmallTalks.Core.Models.Analysis analysis, Func <string, EventTrack> eventTrackFactory, bool fireAndForget = default, CancellationToken cancellationToken = default)
 {
     return(TrackAsync(new EventTrackExtension(sender), analysis, eventTrackFactory, fireAndForget, cancellationToken));
 }