fs: fix fs.readFileSync fd leak when get RangeError

The `new Buffer(size)` will throw RangeError when size grater than 1GB. Need close the fd here.
Thanks @othiym23. [My understanding](https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#2-unsupported-syntax) was also that `try` couldn't be optimized.