@@ -193,10 +193,21 @@ public class WebSocketTransport {
193
193
}
194
194
195
195
switch messageType {
196
- case . data,
197
- . next,
198
- . error:
199
- if let id = parseHandler. id, let responseHandler = subscribers [ id] {
196
+ case . data, . next, . error:
197
+ guard let id = parseHandler. id else {
198
+ let websocketError = WebSocketError (
199
+ payload: parseHandler. payload,
200
+ error: parseHandler. error,
201
+ kind: . unprocessedMessage( text)
202
+ )
203
+ self . notifyErrorAllHandlers ( websocketError)
204
+
205
+ break
206
+ }
207
+
208
+ // If we have a handler ID but no subscriber exists for that ID then the
209
+ // subscriber probably unsubscribed.
210
+ if let responseHandler = subscribers [ id] {
200
211
if let payload = parseHandler. payload {
201
212
responseHandler ( . success( payload) )
202
213
} else if let error = parseHandler. error {
@@ -207,11 +218,6 @@ public class WebSocketTransport {
207
218
kind: . neitherErrorNorPayloadReceived)
208
219
responseHandler ( . failure( websocketError) )
209
220
}
210
- } else {
211
- let websocketError = WebSocketError ( payload: parseHandler. payload,
212
- error: parseHandler. error,
213
- kind: . unprocessedMessage( text) )
214
- self . notifyErrorAllHandlers ( websocketError)
215
221
}
216
222
case . complete:
217
223
if let id = parseHandler. id {
0 commit comments