@@ -4,7 +4,13 @@ const { normalizeHeaders } = require('../utils');
44
55class Response extends ServerResponse {
66 constructor ( resolve , platform , getwayType ) {
7- super ( { writable : true } instanceof Writable ? { writable : true } : new Writable ( ) ) ;
7+ const dummyWritable = new Writable ( {
8+ write ( chunk , encoding , callback ) {
9+ callback ( ) ; // noop
10+ }
11+ } ) ;
12+
13+ super ( dummyWritable ) ;
814
915 this . _resolve = resolve ;
1016 this . _chunks = [ ] ;
@@ -27,10 +33,9 @@ class Response extends ServerResponse {
2733 if ( chunk ) this . write ( chunk ) ;
2834
2935 const result = this . toJSON ( ) ;
30-
3136 this . _resolve ( result ) ;
32-
33- return super . end ( ...args ) ;
37+
38+ return super . end ( null , ...args ) ;
3439 }
3540
3641 encode ( encoding ) {
@@ -52,21 +57,24 @@ class Response extends ServerResponse {
5257 const isBase64Encoded = this . isBase64Encoded ( ) ;
5358 const body = isBase64Encoded ? buffer . toString ( 'base64' ) : buffer . toString ( 'utf8' ) ;
5459
55- const headers = normalizeHeaders ( this . getHeaders ( ) , this . _platform , this . _getwayType )
56- let cookies = '' ;
60+ const headers = normalizeHeaders ( this . getHeaders ( ) , this . _platform , this . _getwayType ) ;
61+
62+ headers [ 'content-length' ] = buffer . length ;
63+
64+ let cookies = undefined ;
5765 if ( this . isPlatform ( 'aws' ) ) {
5866 const setCookieKey = Object . keys ( headers ) . find (
5967 key => key . toLowerCase ( ) === 'set-cookie'
6068 ) ;
61- cookies = setCookieKey ? headers [ setCookieKey ] : undefined ;
6269 if ( setCookieKey ) {
70+ cookies = headers [ setCookieKey ] ;
6371 delete headers [ setCookieKey ] ;
6472 }
6573 }
6674
67- const platform = this . _platform ;
6875 const statusCode = this . statusCode || 200 ;
69- switch ( platform ) {
76+
77+ switch ( this . _platform ) {
7078 case 'azure' :
7179 return {
7280 status : statusCode ,
@@ -85,14 +93,14 @@ class Response extends ServerResponse {
8593 headers,
8694 body,
8795 cookies,
88- isBase64Encoded
89- }
96+ isBase64Encoded,
97+ } ;
9098 default :
9199 return {
92100 statusCode,
93101 headers,
94102 body,
95- isBase64Encoded
103+ isBase64Encoded,
96104 } ;
97105 }
98106 }
0 commit comments