module Slack::RealTime::Config

def concurrency

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

def detect_concurrency

def detect_concurrency
  [:Eventmachine, :Celluloid].each do |concurrency|
    begin
      return Slack::RealTime::Concurrency.const_get(concurrency)
    rescue LoadError, NameError
      false # could not be loaded, missing dependencies
    end
  end
  fail NoConcurrencyError, 'Missing concurrency. Add faye-websocket or celluloid-io 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 = {}
  self.store_class = Slack::RealTime::Store
  self.logger = nil
end