Looking at the function DicomMessage._read() and the following section:
if (cleanTagString === "00080005") {
...
bufferStream.setDecoder(new TextDecoder(coding));
the above assumes that cleanTagString === "00080005" will be encountered before other encoded tags. If this does not hold true then this will be set too late.