Shouldn't removeWaitingRequest be in some kind of "final" statement? E.g. if exception is thrown in the processing, the code won't remove it