static public async Task RunAsync() { using (var container = new Container()) { var mediator = BuildMediator(container); IDomainEventManager manager = new DomainEventManager(mediator); using (var s1 = manager.Scope()) { await s1.AddAsync(new EventOne("Ross")); await s1.AddAsync(new EventOne("Tammy")); using (var s2 = manager.Scope()) { using (var s3 = manager.Scope()) { await s3.AddAsync(new EventThree("Ross")); await s3.AddAsync(new EventThree("Tammy")); await s3.BroadcastAsync(); } await s2.AddAsync(new EventTwo("Ross")); await s2.AddAsync(new EventTwo("Tammy")); await s2.BroadcastAsync(); } await s1.BroadcastAsync(); } } }