Should the callback be made to accept the input that caused the error as well?  Perhaps it might want to do something with it (eg, store it somewhere so that it can be debugged later).

Also, maybe the callback could return an input (by default it might return Input.Empty) that would be processed by the old Iteratee instead of the input that caused the error.