proxy.DoWorkAsync();
proxy.CloseAsync();

でエラーになるとすればそれはフレームワークのバグだから報告するといい。
と、ここまで書いて思いついたんだが、

proxy.DoWork1Completed += (sender, e) => { proxy.DoWork2Async(); };
proxy.DoWork1Async();
proxy.CloseAsync();

みたいなアホなことしてたということはないか?