* Calling fs.ReadStream.destroy() or fs.WriteStream.destroy() twice would close
the file descriptor twice. That's bad because the file descriptor may have
been repurposed in the mean time.
* A bad value check in fs.ReadStream.prototype.destroy() would prevent a stream
created with fs.createReadStream({fd:0}) from getting closed.
Previously, setTimeout(fn, 0) would create a new Timer() object,
which has a close() method (and is a bit slower). The recent
change to more closely emulate browser setTimeout behavior dodges
this path, so this assertion is no longer valid.