def run(action, args)
      args = args.respond_to?(:fixed_flatten) ? args.fixed_flatten(1) : args.flatten(1)
      begin
        unless(@action_timeout.zero?)
          Timeout::timeout(@action_timeout) do
            action.call(*args)
          end
        else
          action.call(*args)
        end
      rescue Timeout::Error => boom
        @logger.warn("Pool thread reached max execution time for action: #{boom}")
        raise boom
      end
    end
def run(action, args)
      args = args.respond_to?(:fixed_flatten) ? args.fixed_flatten(1) : args.flatten(1)
      begin
        unless(@action_timeout.zero?)
          Timeout::timeout(@action_timeout) do
            action.call(*args)
          end
        else
          action.call(*args)
        end
      rescue Timeout::Error => boom
        @logger.warn("Pool thread reached max execution time for action: #{boom}")
        raise boom
      end
    end
action:: task to be run
 args:: arguments to be passed to task
 Run the task