A take on re-implementing channels (WIP- don't merge)

This is WIP and not yet finished.

"Async" is more generic term, and we will reuse this implementation to WebSockets as well.