pub type Reader(a)
pub fn cancel(reader: Reader(a), reason: b) -> Promise(Nil)
pub fn closed(reader: Reader(a)) -> Promise(Nil)
pub fn read(reader: Reader(a)) -> Promise(ReadResult(a))
pub fn release_lock(reader: Reader(a)) -> Reader(a)