lib/redis.rb in redis-5.0.0.beta3 vs lib/redis.rb in redis-5.0.0.beta4

- old
+ new

@@ -163,22 +163,30 @@ @client.blocking_call_v(timeout, command, &block) end end def _subscription(method, timeout, channels, block) - if @subscription_client - return @subscription_client.call_v([method] + channels) - end + if block + if @subscription_client + raise SubscriptionError, "This client is already subscribed" + end - begin - @subscription_client = SubscribedClient.new(@client.pubsub) - if timeout > 0 - @subscription_client.send(method, timeout, *channels, &block) - else - @subscription_client.send(method, *channels, &block) + begin + @subscription_client = SubscribedClient.new(@client.pubsub) + if timeout > 0 + @subscription_client.send(method, timeout, *channels, &block) + else + @subscription_client.send(method, *channels, &block) + end + ensure + @subscription_client = nil end - ensure - @subscription_client = nil + else + unless @subscription_client + raise SubscriptionError, "This client is not subscribed" + end + + @subscription_client.call_v([method].concat(channels)) end end end require "redis/version"