I believe you have a race in that code on error channel. You can't guarantee that the value you send on it will be received by correct receiver.
If you have 2 concurrent transfers and one errors and the other succeds, second one may receive an error intended for the first one.