Congratulations. You just implemented CQRS from first principles :)
The only thing about this approach that has always bothered me is in thinking about what the source of truth is for data. Does Icebreaker now treat the cache as the source of truth for booking info? If so, how do you respond to event loss over the data pipeline?