class Slack::RealTime::Socket

def close

def close
  # When you call `driver.emit(:close)`, it will typically end up calling `client.close`
  # which will call `@socket.close` and end up back here. In order to break this infinite
  # recursion, we check and set `@driver = nil` before invoking `client.close`.
  return unless (driver = @driver)
  @driver = nil
  driver.emit(:close)
end