It can mean that making a connection can affect the way in which *subsequent* connections are made, yes. But I don't see that instance as a bug, so long as the behavior is clear in the docstring (i.e., functions connected with the same name will be treated as a group). I expect such cases to be rare, but if they did ever come up, a simple solution would be to write a one-line wrapper using a different name.

However, it is easy enough to protect against such corner cases by allowing use of either `str` or callback form, since the callback will at least be unique (while the `str` will be more convenient in most cases). We can also safeguard against such accidents as you suggest by throwing an error if `before` or `after` has a `str` reference that could refer to more than one function. I'm -1 on making people pass a `name` argument since I think that over-complicates the API (especially for what is expected to be a rare issue), but the check and alternate use are simple enough.