I don't think we want patch 1/2. Returning an error from the chain function means that the data wasn't actually consumed. If an element consumes the data and returns an error anyway, that's a bug in that element. Given that 2/2 fixes the interaction in a way that seems correct, I don't think we want to work around it in a worse way.