module Slack::RealTime::Config

def concurrency

def concurrency
  (val = @concurrency).respond_to?(:call) ? val.call : val
end

def detect_concurrency

def detect_concurrency
  Slack::RealTime::Concurrency.const_get(:Async)
rescue LoadError, NameError
  raise NoConcurrencyError, 'Missing concurrency. Add async-websocket to your Gemfile.'
end

def reset

def reset
  self.websocket_ping = 30
  self.websocket_proxy = nil
  self.token = nil
  self.concurrency = method(:detect_concurrency)
  self.start_options = { request: { timeout: 180 } }
  self.store_class = Slack::RealTime::Stores::Starter
  self.store_options = {}
  self.logger = nil
  self.async_handlers = :none
end