Get rid of null check of responseHandler, also add proper synchronizatio...

1. force method contract in ctor to avoid null check;
2. add proper synchronization;
3. make the class real internal by removing public keyword; (revert this)
Oh sorry, I take it back, RequestHandle does that, but still I don't see the benefit, what is the possible synchronization related collision that we are trying to avoid? @zxw1962 please?