Я думаю, что диалоги должны просто признать свои ограничения. Это не раздражает, потому что не дает полезной оценки времени, это раздражает, потому что она авторитетно предлагает оценку, которая является очевидной ерундой.
Итак, оцените, сколько хотите, на основе текущего или среднего на данный момент курса, скользящих средних, отбрасывающих выбросы или что-то еще. Зависит от операции и типичной продолжительности событий, которые ее задерживают, поэтому у вас могут быть разные алгоритмы, если вы знаете, что копирование файла связано с сетевым диском. Но до тех пор, пока ваша оценка не будет достаточно последовательной в течение периода времени, равного меньшим 30 секундам или 10% от расчетного времени, покажите «о, дорогой, похоже, что-то вроде задержки», когда она сильно замедлена, или просто игнорируйте это, если это сильно ускорилось.
Например, диалоговые сообщения, принимаемые с интервалом в 1 секунду, когда соединение на короткое время останавливается:
remaining: 60 seconds // estimate is 60 seconds
remaining: 59 seconds // estimate is 59 seconds
remaining: delayed [was 59 seconds] // estimate is 12 hours
remaining: delayed [was 59 seconds] // estimate is infinity
remaining: delayed [was 59 seconds] // got data: estimate is 59 seconds
// six seconds later
remaining: 53 seconds // estimate is 53 seconds