def <<(action)
      case action
        when Proc
          queue(action)
        when Array
          raise ArgumentError.new('Actions to be processed by the pool must be a proc/lambda or [proc/lambda, [*args]]') unless action.size == 2 and action[0].is_a?(Proc) and action[1].is_a?(Array)
          queue(action[0], action[1])
        else
          raise ArgumentError.new('Actions to be processed by the pool must be a proc/lambda or [proc/lambda, [*args]]')
      end
      nil
    end
def <<(action)
      case action
        when Proc
          queue(action)
        when Array
          raise ArgumentError.new('Actions to be processed by the pool must be a proc/lambda or [proc/lambda, [*args]]') unless action.size == 2 and action[0].is_a?(Proc) and action[1].is_a?(Array)
          queue(action[0], action[1])
        else
          raise ArgumentError.new('Actions to be processed by the pool must be a proc/lambda or [proc/lambda, [*args]]')
      end
      nil
    end
action:: proc to be executed or array of [proc, [*args]]
 Add a new proc/lambda to be executed (alias for queue)