diff --git a/lib/expeditor/command.rb b/lib/expeditor/command.rb
index <HASH>..<HASH> 100644
--- a/lib/expeditor/command.rb
+++ b/lib/expeditor/command.rb
@@ -87,10 +87,9 @@ module Expeditor
     end
 
     # `chain` returns new command that has self as dependencies
-    def chain(&block)
-      Command.new(dependencies: [self]) do |v|
-        block.call(v)
-      end
+    def chain(opts = {}, &block)
+      opts[:dependencies] = [self]
+      Command.new(opts, &block)
     end
 
     def self.const(value)
diff --git a/spec/expeditor/command_spec.rb b/spec/expeditor/command_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/expeditor/command_spec.rb
+++ b/spec/expeditor/command_spec.rb
@@ -498,6 +498,17 @@ describe Expeditor::Command do
         expect(command_double.get).to eq(84)
       end
     end
+
+    context 'with options' do
+      it 'should recognize options' do
+        command = simple_command(42)
+        command_sleep = command.chain(timeout: 0.01) do |n|
+          sleep 0.1
+          n * 2
+        end.start
+        expect { command_sleep.get }.to raise_error(Expeditor::TimeoutError)
+      end
+    end
   end
 
   describe '.const' do
Make it possible to use options in Command#chain