Channel refactor

Can we use Rx retry here, and extract retry function out of this code? Ocelli is a good example how to do that.