             } else if response.code == .BinaryFrame {
                 if canDispatch {
                     let data = response.buffer! //local copy so it's not perverse for writing
-                    dispatch_async(queue) { [weak self] in
+                    dispatch_async(callbackQueue) { [weak self] in
                         guard let s = self else { return }
                         s.onData?(data)
                         s.delegate?.websocketDidReceiveData(s, data: data)

                    return false
                }
                if canDispatch {
                    dispatch_async(queue) { [weak self] in
                        guard let s = self else { return }
                        s.onText?(str! as String)
                        s.delegate?.websocketDidReceiveMessage(s, text: str! as String)

        didDisconnect = true
        connected = false
        guard canDispatch else {return}
        dispatch_async(callbackQueue) { [weak self] in
            guard let s = self else { return }
            s.onDisconnect?(error)
            s.delegate?.websocketDidDisconnect(s, error: error)
