I would love to read a write up on how you accomplished this.
In the meantime, the pub/sub setup we've got is pretty similar to the one presented a little way down the following article:
https://www.theagileplanner.com/blog/building-agile-planner/...
Our listeners sit completely separate from the controllers, though, and we're not using them for anything like handling controller response logic (I'm not sure how I feel about that, although the idea is certainly interesting).