/*!1* destroy2* Copyright(c) 2014 Jonathan Ong3* MIT Licensed4*/56'use strict'78/**9* Module dependencies.10* @private11*/1213var ReadStream = require('fs').ReadStream14var Stream = require('stream')1516/**17* Module exports.18* @public19*/2021module.exports = destroy2223/**24* Destroy a stream.25*26* @param {object} stream27* @public28*/2930function destroy(stream) {31if (stream instanceof ReadStream) {32return destroyReadStream(stream)33}3435if (!(stream instanceof Stream)) {36return stream37}3839if (typeof stream.destroy === 'function') {40stream.destroy()41}4243return stream44}4546/**47* Destroy a ReadStream.48*49* @param {object} stream50* @private51*/5253function destroyReadStream(stream) {54stream.destroy()5556if (typeof stream.close === 'function') {57// node.js core bug work-around58stream.on('open', onOpenClose)59}6061return stream62}6364/**65* On open handler to close stream.66* @private67*/6869function onOpenClose() {70if (typeof this.fd === 'number') {71// actually close down the fd72this.close()73}74}757677