After spending time with my usage pattern, and after finding out from you about the difference between
siphon and
join, I felt that there is much to this idea that auto-close semantics are contained in the
edge and not the node: no matter what channel you
siphon into, you don't want to close it when you close the source. In my case, the client knows he doesn't want to close the source when he closes the sink, and there are legitimate cases when he knows he
wants to close it. This is why I found the addition of
leech to produce the nicest code. Maybe a generalized function that connects two channels and accepts two boolean options (something like
autoclose-src and
autoclose-dest) would be appropriate. Then
siphon and
join would be just two of the four special cases.