add do
fix(net) use Do to respect the caller's context