class Fluent::Counter::Client

def init(params, options: {})

5. init([{ name: 'name1',reset_interval: 20 }, { name: 'name2',reset_interval: 20 }]) { |res| ... }
4. init([{ name: 'name1',reset_interval: 20 }, { name: 'name2',reset_interval: 20 }], options: {})
3. init([{ name: 'name1',reset_interval: 20 }, { name: 'name2',reset_interval: 20 }])
2. init({ name: 'name',reset_interval: 20 }, options: {})
1. init(name: 'name')

`init` receives various arguments.
=== Example
def init(params, options: {})
  exist_scope!
  params = [params] unless params.is_a?(Array)
  res = send_request('init', @scope, params, options)
  # if `async` is false or missing, block at this method and return a Future::Result object.
  if block_given?
    Thread.start do
      yield res.get
    end
  else
    res
  end
end