Почему `if error`? Здесь бывает что среднее между fail и done? Может тогда нужно делать то, что делают в done если не error?