This looks pretty interesting! We use a library we've built called relay (https://github.com/armon/relay) to do something similar also in Go.
I like the higher level task based approach of this library, since this is a pretty common pattern when using task brokers.