Why another router?
I believe that it’s possible to make router functionality pure and simple. Without promises and bunch of callback-style code. Right now it’s completely pure: for same input (state) router generate same output (rendered markup).
Why CSP channels?
With CSP channels it's easy organize asynchronous workflow required for retreiving multiple components state. Code looks clean, testable and easy-to-understand.
It's only for React.js?
No, it's possible to use with any server-ready framework (even vanilla JS!). Just write correspond render module and move on.