unlink is demoable but suffers a time() caching race condition