Package Exports
- destroy
- destroy/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (destroy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
destroy
Destroy a stream.
This module is meant to ensure a stream gets destroyed, handling different APIs and Node.js bugs.
API
var destroy = require('destroy')
destroy(stream [, suppress])
Destroy the given stream, and optionally suppress any future error
events.
In most cases, this is identical to a simple stream.destroy()
call. The rules
are as follows for a given stream:
- If the
stream
is an instance ofReadStream
, then callstream.destroy()
and add a listener to theopen
event to callstream.close()
if it is fired. This is for a Node.js bug that will leak a file descriptor if.destroy()
is called beforeopen
. - If the
stream
is an instance of a zlib stream, then callstream.destroy()
and close the underlying zlib handle if open, otherwise callstream.close()
. This is for consistency across Node.js versions and a Node.js bug that will leak a native zlib handle. - If the
stream
is not an instance ofStream
, then nothing happens. - If the
stream
has a.destroy()
method, then call it.
The function returns the stream
passed in as the argument.
Example
var destroy = require('destroy')
var fs = require('fs')
var stream = fs.createReadStream('package.json')
// ... and later
destroy(stream)