title: fs.exists, fs.existsSync - why are they deprecated?
body: <p>I noticed that the official node documentation says something startling about <code>fs.exists</code>:</p>
  
  <blockquote>
    <p>"fs.exists() is an anachronism and exists only for historical reasons.
    There should almost never be a reason to use it in your own code.</p>
    
    <p>In particular, checking if a file exists before opening it is an
    anti-pattern that leaves you vulnerable to race conditions: another
    process may remove the file between the calls to fs.exists() and
    fs.open(). Just open the file and handle the error when it's not
    there."</p>
  </blockquote>
  
  <p>I understand the suggestion, to open a file and then handle the error if it doesn't exist, but what I don't understand is why the interface is being deprecated rather than the implementation simply changing.</p>
  
  <p>Can anyone explain to me why checking for the existence of a file with an API that is as simple and logical as <code>fs.exists</code> is such a bad thing that it should be called an anti-pattern and removed from the node API?</p>