pass an Error to `next`, not a string

This was breaking convention, and could be problematic for code that
assumes errors are correctly passed around, not strings.