I'm not sure about moving the .then before .catchError: _readError seems to be focused only on i/o errors, while the 'then' portion of the code is doing actual parsing. If there is an error parsing, maybe we want to keep it was it is and propagate parse errors in the returned future?

Related: I just noticed that _readError is currently returning 'true', it should be changed to be void. It used to be that handleException needed a boolean result. `catchError` instead will return that result as the result of your future. So the `Future<SrouceFile>` will contain a boolean =(. Making it void makes this return a `null` file by default.