| 'use strict'; |
| const PassThrough = require('stream').PassThrough; |
| const zlib = require('zlib'); |
| const mimicResponse = require('mimic-response'); |
| |
| module.exports = response => { |
| // TODO: Use Array#includes when targeting Node.js 6 |
| if (['gzip', 'deflate'].indexOf(response.headers['content-encoding']) === -1) { |
| return response; |
| } |
| |
| const unzip = zlib.createUnzip(); |
| const stream = new PassThrough(); |
| |
| mimicResponse(response, stream); |
| |
| unzip.on('error', err => { |
| if (err.code === 'Z_BUF_ERROR') { |
| stream.end(); |
| return; |
| } |
| |
| stream.emit('error', err); |
| }); |
| |
| response.pipe(unzip).pipe(stream); |
| |
| return stream; |
| }; |