2323
2424const {
2525 ArrayIsArray,
26- ArrayPrototypeForEach,
27- ArrayPrototypePush,
28- ArrayPrototypeShift,
2926 Error,
30- FunctionPrototype,
31- FunctionPrototypeBind,
32- FunctionPrototypeCall,
3327 ObjectKeys,
3428 ObjectSetPrototypeOf,
35- ReflectApply,
3629 RegExpPrototypeTest,
3730 Symbol,
3831 SymbolFor,
39- TypedArrayPrototypeSlice,
4032} = primordials ;
4133
4234const net = require ( 'net' ) ;
@@ -185,7 +177,7 @@ class HTTPServerAsyncResource {
185177}
186178
187179function ServerResponse ( req ) {
188- FunctionPrototypeCall ( OutgoingMessage , this ) ;
180+ OutgoingMessage . call ( this ) ;
189181
190182 if ( req . method === 'HEAD' ) this . _hasBody = false ;
191183
@@ -212,7 +204,7 @@ ObjectSetPrototypeOf(ServerResponse, OutgoingMessage);
212204ServerResponse . prototype . _finish = function _finish ( ) {
213205 DTRACE_HTTP_SERVER_RESPONSE ( this . socket ) ;
214206 emitStatistics ( this [ kServerResponseStatistics ] ) ;
215- FunctionPrototypeCall ( OutgoingMessage . prototype . _finish , this ) ;
207+ OutgoingMessage . prototype . _finish . call ( this ) ;
216208} ;
217209
218210
@@ -386,7 +378,7 @@ function Server(options, requestListener) {
386378 validateBoolean ( insecureHTTPParser , 'options.insecureHTTPParser' ) ;
387379 this . insecureHTTPParser = insecureHTTPParser ;
388380
389- FunctionPrototypeCall ( net . Server , this , { allowHalfOpen : true } ) ;
381+ net . Server . call ( this , { allowHalfOpen : true } ) ;
390382
391383 if ( requestListener ) {
392384 this . on ( 'request' , requestListener ) ;
@@ -422,17 +414,19 @@ Server.prototype[EE.captureRejectionSymbol] = function(err, event, ...args) {
422414 const { 1 : res } = args ;
423415 if ( ! res . headersSent && ! res . writableEnded ) {
424416 // Don't leak headers.
425- ArrayPrototypeForEach ( res . getHeaderNames ( ) ,
426- ( name ) => res . removeHeader ( name ) ) ;
417+ const names = res . getHeaderNames ( ) ;
418+ for ( let i = 0 ; i < names . length ; i ++ ) {
419+ res . removeHeader ( names [ i ] ) ;
420+ }
427421 res . statusCode = 500 ;
428422 res . end ( STATUS_CODES [ 500 ] ) ;
429423 } else {
430424 res . destroy ( ) ;
431425 }
432426 break ;
433427 default :
434- ReflectApply ( net . Server . prototype [ SymbolFor ( 'nodejs.rejection' ) ] ,
435- this , arguments ) ;
428+ net . Server . prototype [ SymbolFor ( 'nodejs.rejection' ) ]
429+ . apply ( this , arguments ) ;
436430 }
437431} ;
438432
@@ -493,20 +487,20 @@ function connectionListenerInternal(server, socket) {
493487 outgoingData : 0 ,
494488 keepAliveTimeoutSet : false
495489 } ;
496- state . onData = FunctionPrototypeBind ( socketOnData , undefined ,
497- server , socket , parser , state ) ;
498- state . onEnd = FunctionPrototypeBind ( socketOnEnd , undefined ,
499- server , socket , parser , state ) ;
500- state . onClose = FunctionPrototypeBind ( socketOnClose , undefined ,
501- socket , state ) ;
502- state . onDrain = FunctionPrototypeBind ( socketOnDrain , undefined ,
503- socket , state ) ;
490+ state . onData = socketOnData . bind ( undefined ,
491+ server , socket , parser , state ) ;
492+ state . onEnd = socketOnEnd . bind ( undefined ,
493+ server , socket , parser , state ) ;
494+ state . onClose = socketOnClose . bind ( undefined ,
495+ socket , state ) ;
496+ state . onDrain = socketOnDrain . bind ( undefined ,
497+ socket , state ) ;
504498 socket . on ( 'data' , state . onData ) ;
505499 socket . on ( 'error' , socketOnError ) ;
506500 socket . on ( 'end' , state . onEnd ) ;
507501 socket . on ( 'close' , state . onClose ) ;
508502 socket . on ( 'drain' , state . onDrain ) ;
509- parser . onIncoming = FunctionPrototypeBind ( parserOnIncoming , undefined ,
503+ parser . onIncoming = parserOnIncoming . bind ( undefined ,
510504 server , socket , state ) ;
511505
512506 // We are consuming socket, so it won't get any actual data
@@ -527,18 +521,18 @@ function connectionListenerInternal(server, socket) {
527521 parser . consume ( socket . _handle ) ;
528522 }
529523 parser [ kOnExecute ] =
530- FunctionPrototypeBind ( onParserExecute , undefined ,
531- server , socket , parser , state ) ;
524+ onParserExecute . bind ( undefined ,
525+ server , socket , parser , state ) ;
532526
533527 parser [ kOnTimeout ] =
534- FunctionPrototypeBind ( onParserTimeout , undefined ,
535- server , socket ) ;
528+ onParserTimeout . bind ( undefined ,
529+ server , socket ) ;
536530
537531 // When receiving new requests on the same socket (pipelining or keep alive)
538532 // make sure the requestTimeout is active.
539533 parser [ kOnMessageBegin ] =
540- FunctionPrototypeBind ( setRequestTimeout , undefined ,
541- server , socket ) ;
534+ setRequestTimeout . bind ( undefined ,
535+ server , socket ) ;
542536
543537 // This protects from DOS attack where an attacker establish the connection
544538 // without sending any data on applications where server.timeout is left to
@@ -594,7 +588,7 @@ function socketOnClose(socket, state) {
594588
595589function abortIncoming ( incoming ) {
596590 while ( incoming . length ) {
597- const req = ArrayPrototypeShift ( incoming ) ;
591+ const req = incoming . shift ( ) ;
598592 req . destroy ( connResetException ( 'aborted' ) ) ;
599593 }
600594 // Abort socket._httpMessage ?
@@ -606,7 +600,7 @@ function socketOnEnd(server, socket, parser, state) {
606600 if ( ret instanceof Error ) {
607601 debug ( 'parse error' ) ;
608602 // socketOnError has additional logic and will call socket.destroy(err).
609- FunctionPrototypeCall ( socketOnError , socket , ret ) ;
603+ socketOnError . call ( socket , ret ) ;
610604 } else if ( ! server . httpAllowHalfOpen ) {
611605 socket . end ( ) ;
612606 } else if ( state . outgoing . length ) {
@@ -629,7 +623,7 @@ function socketOnData(server, socket, parser, state, d) {
629623function onRequestTimeout ( socket ) {
630624 socket [ kRequestTimeout ] = undefined ;
631625 // socketOnError has additional logic and will call socket.destroy(err).
632- ReflectApply ( socketOnError , socket , [ new ERR_HTTP_REQUEST_TIMEOUT ( ) ] ) ;
626+ socketOnError . call ( socket , new ERR_HTTP_REQUEST_TIMEOUT ( ) ) ;
633627}
634628
635629function onParserExecute ( server , socket , parser , state , ret ) {
@@ -649,7 +643,7 @@ function onParserTimeout(server, socket) {
649643 socket . destroy ( ) ;
650644}
651645
652- const noop = FunctionPrototype ;
646+ const noop = ( ) => { } ;
653647const badRequestResponse = Buffer . from (
654648 `HTTP/1.1 400 ${ STATUS_CODES [ 400 ] } ${ CRLF } ` +
655649 `Connection: close${ CRLF } ${ CRLF } ` , 'ascii'
@@ -696,7 +690,7 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d) {
696690 prepareError ( ret , parser , d ) ;
697691 ret . rawPacket = d || parser . getCurrentBuffer ( ) ;
698692 debug ( 'parse error' , ret ) ;
699- FunctionPrototypeCall ( socketOnError , socket , ret ) ;
693+ socketOnError . call ( socket , ret ) ;
700694 } else if ( parser . incoming && parser . incoming . upgrade ) {
701695 // Upgrade or CONNECT
702696 const req = parser . incoming ;
@@ -719,7 +713,7 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d) {
719713 const eventName = req . method === 'CONNECT' ? 'connect' : 'upgrade' ;
720714 if ( eventName === 'upgrade' || server . listenerCount ( eventName ) > 0 ) {
721715 debug ( 'SERVER have listener for %s' , eventName ) ;
722- const bodyHead = TypedArrayPrototypeSlice ( d , ret , d . length ) ;
716+ const bodyHead = d . slice ( ret , d . length ) ;
723717
724718 socket . readableFlowing = null ;
725719
@@ -738,7 +732,7 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d) {
738732 // When receiving new requests on the same socket (pipelining or keep alive)
739733 // make sure the requestTimeout is active.
740734 parser [ kOnMessageBegin ] =
741- FunctionPrototypeBind ( setRequestTimeout , undefined , server , socket ) ;
735+ setRequestTimeout . bind ( undefined , server , socket ) ;
742736 }
743737
744738 if ( socket . _paused && socket . parser ) {
@@ -802,7 +796,7 @@ function resOnFinish(req, res, socket, state, server) {
802796 // array will be empty.
803797 assert ( state . incoming . length === 0 || state . incoming [ 0 ] === req ) ;
804798
805- ArrayPrototypeShift ( state . incoming ) ;
799+ state . incoming . shift ( ) ;
806800
807801 // If the user never called req.read(), and didn't pipe() or
808802 // .resume() or .on('data'), then we call req._dump() so that the
@@ -835,7 +829,7 @@ function resOnFinish(req, res, socket, state, server) {
835829 }
836830 } else {
837831 // Start sending the next message
838- const m = ArrayPrototypeShift ( state . outgoing ) ;
832+ const m = state . outgoing . shift ( ) ;
839833 if ( m ) {
840834 m . assignSocket ( socket ) ;
841835 }
@@ -861,7 +855,7 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
861855 return 2 ;
862856 }
863857
864- ArrayPrototypePush ( state . incoming , req ) ;
858+ state . incoming . push ( req ) ;
865859
866860 // If the writable end isn't consuming, then stop reading
867861 // so that we don't become overwhelmed by a flood of
@@ -879,8 +873,8 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
879873
880874 const res = new server [ kServerResponse ] ( req ) ;
881875 res . _keepAliveTimeout = server . keepAliveTimeout ;
882- res . _onPendingData = FunctionPrototypeBind ( updateOutgoingData , undefined ,
883- socket , state ) ;
876+ res . _onPendingData = updateOutgoingData . bind ( undefined ,
877+ socket , state ) ;
884878
885879 res . shouldKeepAlive = keepAlive ;
886880 DTRACE_HTTP_SERVER_REQUEST ( req , socket ) ;
@@ -896,16 +890,16 @@ function parserOnIncoming(server, socket, state, req, keepAlive) {
896890
897891 if ( socket . _httpMessage ) {
898892 // There are already pending outgoing res, append.
899- ArrayPrototypePush ( state . outgoing , res ) ;
893+ state . outgoing . push ( res ) ;
900894 } else {
901895 res . assignSocket ( socket ) ;
902896 }
903897
904898 // When we're finished writing the response, check if this is the last
905899 // response, if so destroy the socket.
906900 res . on ( 'finish' ,
907- FunctionPrototypeBind ( resOnFinish , undefined ,
908- req , res , socket , state , server ) ) ;
901+ resOnFinish . bind ( undefined ,
902+ req , res , socket , state , server ) ) ;
909903
910904 if ( req . headers . expect !== undefined &&
911905 ( req . httpVersionMajor === 1 && req . httpVersionMinor === 1 ) ) {
@@ -977,8 +971,8 @@ function unconsume(parser, socket) {
977971
978972function generateSocketListenerWrapper ( originalFnName ) {
979973 return function socketListenerWrap ( ev , fn ) {
980- const res = ReflectApply ( net . Socket . prototype [ originalFnName ] , this ,
981- [ ev , fn ] ) ;
974+ const res = net . Socket . prototype [ originalFnName ] . call ( this ,
975+ ev , fn ) ;
982976 if ( ! this . parser ) {
983977 this . on = net . Socket . prototype . on ;
984978 this . addListener = net . Socket . prototype . addListener ;
0 commit comments