@@ -10,12 +10,24 @@ function isResGzipped(res) {
10
10
11
11
function zipOrUnzip ( method ) {
12
12
return function ( rspData , res ) {
13
- return ( isResGzipped ( res ) && rspData . length ) ? zlib [ method ] ( rspData ) : rspData ;
13
+ return new Promise ( function ( resolve , reject ) {
14
+ if ( isResGzipped ( res ) && rspData . length ) {
15
+ zlib [ method ] ( rspData , function ( err , buffer ) {
16
+ if ( err ) {
17
+ reject ( err ) ;
18
+ } else {
19
+ resolve ( buffer ) ;
20
+ }
21
+ } ) ;
22
+ } else {
23
+ resolve ( rspData ) ;
24
+ }
25
+ } ) ;
14
26
} ;
15
27
}
16
28
17
- var maybeUnzipResponse = zipOrUnzip ( 'gunzipSync ' ) ;
18
- var maybeZipResponse = zipOrUnzip ( 'gzipSync ' ) ;
29
+ var maybeUnzipPromise = zipOrUnzip ( 'gunzip ' ) ;
30
+ var maybeZipPromise = zipOrUnzip ( 'gzip ' ) ;
19
31
20
32
function verifyBuffer ( rspd , reject ) {
21
33
if ( ! Buffer . isBuffer ( rspd ) ) {
@@ -40,25 +52,33 @@ function decorateProxyResBody(container) {
40
52
return Promise . resolve ( container ) ;
41
53
}
42
54
43
- var proxyResData = maybeUnzipResponse ( container . proxy . resData , container . proxy . res ) ;
55
+ var proxyResDataPromise = maybeUnzipPromise ( container . proxy . resData , container . proxy . res ) ;
44
56
var proxyRes = container . proxy . res ;
45
57
var req = container . user . req ;
46
58
var res = container . user . res ;
59
+ var originalResData ;
47
60
48
61
if ( res . statusCode === 304 ) {
49
62
debug ( 'Skipping userResDecorator on response 304' ) ;
50
63
return Promise . resolve ( container ) ;
51
64
}
52
65
53
- return Promise
54
- . resolve ( resolverFn ( proxyRes , proxyResData , req , res ) )
66
+ return proxyResDataPromise
67
+ . then ( function ( proxyResData ) {
68
+ originalResData = proxyResData ;
69
+ return resolverFn ( proxyRes , proxyResData , req , res ) ;
70
+ } )
55
71
. then ( function ( modifiedResData ) {
56
72
return new Promise ( function ( resolve , reject ) {
57
73
var rspd = as . buffer ( modifiedResData , container . options ) ;
58
74
verifyBuffer ( rspd , reject ) ;
59
- updateHeaders ( res , proxyResData , rspd , reject ) ;
60
- container . proxy . resData = maybeZipResponse ( rspd , container . proxy . res ) ;
61
- resolve ( container ) ;
75
+ updateHeaders ( res , originalResData , rspd , reject ) ;
76
+ maybeZipPromise ( rspd , container . proxy . res ) . then ( function ( buffer ) {
77
+ container . proxy . resData = buffer ;
78
+ resolve ( container ) ;
79
+ } ) . catch ( function ( error ) {
80
+ reject ( error ) ;
81
+ } ) ;
62
82
} ) ;
63
83
} ) ;
64
84
}
0 commit comments