Its almost a port of the w3c specc, but uses callbacks instead of promises.
To see if i could, the w3c specc is one of the best speccs i have seen, very readable and easy to follow. The only thing i question is the use of promises in that situation. The only place you can reasnobly call read is from within the promise resolution. If you dont use the good parts of promises (cached values for multiple, possible late, readers) but treat them like a one shot event, it seams like a simple callback is the thing your looking for.