diff --git a/lib/lifx/client.rb b/lib/lifx/client.rb
index <HASH>..<HASH> 100644
--- a/lib/lifx/client.rb
+++ b/lib/lifx/client.rb
@@ -48,8 +48,8 @@ module LIFX
     # @yield [Client] This block is evaluated every `condition_interval` seconds. If true, method returns. If no block is supplied, it will block until it finds at least one light.
     # @return [Client] self
     def discover!(timeout: DISCOVERY_DEFAULT_TIMEOUT, condition_interval: 0.1, &block)
-      block ||= -> { self.lights.count > 0 }
-      try_until -> { block.call(self) }, timeout: timeout, condition_interval: condition_interval do
+      block ||= -> { c.lights.count > 0 }
+      try_until -> { block.arity == 1 ? block.call(self) : block.call }, timeout: timeout, condition_interval: condition_interval do
         discover
       end
       self
Allow blocks with no arguments in Client#discover!