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)
performance is not the question in this case, because using synchronized blocks is of no use here. why even use synchronization if the class is processed only internally and only in one-thread? i don't recall any scenario where instance of this class would be accessed from multiple threads.