client: use custom transport interface
client: integrate go.net/context
client: fix watcher logic