Fix error recovery.

Without this change, etcd error causes it to loop forever writing to a closed channel. It's not good to stack util.Forever calls.