pubsub

Using `PubSubMessage` to encapsulate messages as we need to know when a redis connection goes
down, which can be tracked via `Error` field.