From 32de11f2c43f8a93f4827c4e4b91cba7d59e420d Mon Sep 17 00:00:00 2001 From: a4840639 Date: Thu, 16 Apr 2020 11:45:39 -0700 Subject: [PATCH] Catch error from stream reader The upstream may throw error if unexpected things happened like lost connection to server. Currently it is not catched which will is an uncatched promise rejection. It will also make the stream stuck in not done state. --- can-ndjson-stream.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/can-ndjson-stream.js b/can-ndjson-stream.js index b109fab..843cafa 100644 --- a/can-ndjson-stream.js +++ b/can-ndjson-stream.js @@ -12,6 +12,7 @@ var ndjsonStream = function(response) { is_reader = reader; var decoder = new TextDecoder(); var data_buf = ""; + var errorHandler = controller.error.bind(controller); reader.read().then(function processResult(result) { if (result.done) { @@ -53,8 +54,8 @@ var ndjsonStream = function(response) { } data_buf = lines[lines.length-1]; - return reader.read().then(processResult); - }); + return reader.read().then(processResult).catch(errorHandler); + }).catch(errorHandler); }, cancel: function(reason) {