It may also be convenient to adapt the FileReader to a promise-type interface, but that's somewhat outside the scope of this PR.