Hello,
and
redis.pipelined { redis.hgetall(:foo) }
will have different return values (an Hash for the first, an Array for the latter).
Since even in the context of pipelining every command will return a single Redis reply of any given type, I think we can just take a queue of "request transformers" that will be applied when we finally return the result to the server.