refactor TCP DNS proxy using task.chan