書き込みを待たずに次の処理に行きたかったのでこんなのを書いたら

const fs = require("fs")

const w = text => {
fs.appendFile("./log.txt", text + "\n", () => {})
}

w("A")
w("B")
w("C")
w("D")
w("E")
w("F")
w("G")
w("H")
w("I")
w("J")

順番がバラバラだった

D
A
C
E
F
H
B
I
G
J

非同期とは言え書き込み順は保証されてると思ったのにそんなことなかった

キューに入れて書き込み順は保証するようにした

const fs = require("fs")

const w = (() => {
const q = []
let running = false
const run = async () => {
running = true
let text
while(text = q.shift()) {
await fs.promises.appendFile("./log.txt", text + "\n")
}
running = false
}
return text => {
q.push(text)
if (!running) run()
}
})()

w("A")
w("B")
w("C")
w("D")
w("E")
w("F")
w("G")
w("H")
w("I")
w("J")