             } 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)

        case 0:
            connected = true
            guard canDispatch else {return}
            dispatch_async(queue) { [weak self] in
                guard let s = self else { return }
                s.onConnect?()
                s.delegate?.websocketDidConnect(s)

            }
            if receivedOpcode == .Pong {
                if canDispatch {
                    dispatch_async(callbackQueue) { [weak self] in
                        guard let s = self else { return }
                        s.onPong?()
                        s.pongDelegate?.websocketDidReceivePong(s)
