Use a custom file reader service

This is a small refactoring introducing a custom FileReader service using a promise.

Ok, I am taking this comment into account, I have a more robust solution.