Yes, you're right @pchlupacek . Though that does not explain the infinite loop that is still happening, I don't think, it would just result in the cause being discarded. Calling `next1(Kill)` should still terminate the `Process1`. 

Another thing I would check is that `halt pipe halt` terminates. It may be that case is not currently being handled correctly by `pipe`.