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)
My understanding is a 'synchronized' block will be slower, but I cannot really say how much in case of AHC.