Repository: sublimelinter/sublimelinter
Issue: [beta] AttributeError: 'Daemon' object has no attribute '_callback'

I'm guessing this is happening after 3444f58fa5ede7261b7f8a8356bc3e5b8d4bafa7

This line:
https://github.com/SublimeLinter/SublimeLinter/blob/e7a01475feeb1cdd813dfb9f76fffe91bad28061/lint/queue.py#L19
Triggers an attribute error, instead of an assertion error:
```
Traceback (most recent call last):
  File "/opt/sublime_text/sublime_plugin.py", line 538, in on_activated_async
    callback.on_activated_async(v)
  File "sublime_linter in /home/mandx/.config/sublime-text-3/Installed Packages/SublimeLinter.sublime-package", line 111, in on_activated_async
  File "sublime_linter in /home/mandx/.config/sublime-text-3/Installed Packages/SublimeLinter.sublime-package", line 281, in hit
  File "lint.queue in /home/mandx/.config/sublime-text-3/Installed Packages/SublimeLinter.sublime-package", line 19, in hit
AttributeError: 'Daemon' object has no attribute '_callback'
```
This is happening with the stable version of `SublimeLinter-pylint` and `SublimeLinter-eslint`. Should I also add them to Package Control's `install_prereleases` setting?

Changed files:
sublime_linter.py, lint/queue.py

diff --git a/lint/queue.py b/lint/queue.py
index f283418..3bd00b6 100644
--- a/lint/queue.py
+++ b/lint/queue.py
@@ -10,23 +10,13 @@ timers = {}
 running = defaultdict(threading.Lock)
 
 
-# For compatibility this is a class with unchanged API from SL3.
-class Daemon:
-    def start(self, callback):
-        self._callback = callback
+def hit(view, callback):
+    vid = view.id()
+    delay = get_delay()  # [seconds]
+    return _queue_lint(vid, delay, callback)
 
-    def hit(self, view):
-        assert self._callback, "Queue: Can't hit before start."
 
-        vid = view.id()
-        delay = get_delay()  # [seconds]
-        return queue_lint(vid, delay, self._callback)
-
-    def cleanup(self, vid):
-        cleanup(vid)
-
-
-def queue_lint(vid, delay, callback):  # <-serial execution
+def _queue_lint(vid, delay, callback):  # <-serial execution
     hit_time = time.monotonic()
 
     def worker():                      # <-concurrent execution
@@ -64,6 +54,3 @@ def get_delay():
         return 0
 
     return persist.settings.get('delay')
-
-
-queue = Daemon()
diff --git a/sublime_linter.py b/sublime_linter.py
index 4627c2a..8fac85c 100644
--- a/sublime_linter.py
+++ b/sublime_linter.py
@@ -9,7 +9,7 @@ import sublime_plugin
 
 from .lint import events
 from .lint.linter import Linter
-from .lint.queue import queue
+from .lint import queue
 from .lint import persist, util, style
 from .lint.const import WARN_ERR
 from .lint import backend
@@ -51,7 +51,6 @@ def plugin_loaded():
         linter.initialize()
 
     plugin = SublimeLinter.shared_plugin()
-    queue.start(plugin.lint)
 
     # Lint the visible views from the active window on startup
     if persist.settings.get("lint_mode") in ("background", "load_save"):
@@ -272,7 +271,7 @@ class SublimeLinter(sublime_plugin.EventListener, Listener):
         self.check_syntax(view)
         self.linted_views.add(vid)
 
-        persist.last_hit_times[vid] = queue.hit(view)
+        persist.last_hit_times[vid] = queue.hit(view, self.lint)
 
     def check_syntax(self, view):
         """