Есть вероятность что в первом запросе всё ОК, и просто клиент "тупой" начал делать новые запросы раньше времени.
И ещё такому решению мешает "протокол" дозаливки. Сначала клиент дёргает HEAD запрос, что бы узнать на каком месте случился обрыв. Эта операция не лочится никогда. После этого идёт запрос на заливку оставшегося куска. И если к этому моменту место обрыва связи не будет совпадать с тем, что передаст клиент - это ошибка.