I'm using NSURLSession for the networking. Testing in Charlesproxy with connections drop shows there are actually three requests are being sent instead of one.
It looks like it is sort of NSURLSession low level work - if it determines connection drop, it will actually send several more requests before deciding there is really no network and calling delegate/block with failure.
Just to prove my assumptions, I changed NSURLSessionConfiguration from defaultSessionConfiguration to backgroundSessionConfigurationWithIdentifier and it started to send even more requests (4) before calling delegate/block.
This is not some issue in my opinion, just wondering wether it can be configured somehow.