The 2 mentioned methods (introduced to fix #2 and #3) measure the time of a pin state by waiting for changing to another state (it is the only condition until now). While never experienced this with DHT11 which I use, the code measuring time could be stuck in an infinite loop in case the state never change (for whatever reason...).
The code should be more robust and prevent this potential problem.