This behavior is different than what we had in the prototype. Since those impls were based on Redis and RabbitMQ, it's not so easy to compare with the local in-proc impl, but...

The idea behind tap would in the prototype was that the name would be something that should already exist and the channel would be where tapped messages go. So in that case, tap() is more like inbound() except that the source is a wiretap to be added to the (pre-existing) channel with the provided name.

Don't know if that's very clear, so let me know.