nodejs документы говорят, что writable.end()
принимает обратный вызов
Вы также можете обещать и ждать обратного вызова следующим образом:
const p = new Promise(res => this.write_stream.end(res))
await p;
Хотя, Я не думаю, что вам следует ждать окончания первого потока до sh, прежде чем заменять его на объекте. Это может привести к состоянию гонки, при котором что-то пытается записать в уже завершенный, но не полностью завершенный поток.
Другими словами, если что-то пытается сделать .write () поток после того, как вы вызовете .end (), это приведет к ошибке, поэтому вы должны заменить поток сразу после вызова .end (), чтобы это быть бесшовным.