consumer/async.go
func (c *Consumer) Firehose(
	subscriptionId string,
	authToken string,
) (<-chan *events.Envelope, <-chan error) {
	return c.firehose(newFirehose(
		subscriptionId,
		authToken,
	))
}
func (c *Consumer) Firehose(
	subscriptionId string,
	authToken string,
) (<-chan *events.Envelope, <-chan error) {
	return c.firehose(newFirehose(
		subscriptionId,
		authToken,
	))
}
// Firehose streams all data. All clients with the same subscriptionId will
// receive a proportionate share of the message stream.  Each pool of clients
// will receive the entire stream.
//
// Messages are presented in the order received from the loggregator server.
// Chronological or other ordering is not guaranteed. It is the responsibility
// of the consumer of these channels to provide any desired sorting mechanism.
//
// Whenever an error is encountered, the error will be sent down the error
// channel and Firehose will attempt to reconnect indefinitely.