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
190182if ( req . method === 'HEAD' ) this . _hasBody = false ;
191183
@@ -212,7 +204,7 @@ ObjectSetPrototypeOf(ServerResponse, OutgoingMessage);
212204ServerResponse . prototype . _finish = function _finish ( ) {
213205DTRACE_HTTP_SERVER_RESPONSE ( this . socket ) ;
214206emitStatistics ( 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){
386378validateBoolean ( insecureHTTPParser , 'options.insecureHTTPParser' ) ;
387379this . insecureHTTPParser = insecureHTTPParser ;
388380
389- FunctionPrototypeCall ( net . Server , this , { allowHalfOpen : true } ) ;
381+ net . Server . call ( this , { allowHalfOpen : true } ) ;
390382
391383if ( requestListener ) {
392384this . on ( 'request' , requestListener ) ;
@@ -422,17 +414,19 @@ Server.prototype[EE.captureRejectionSymbol] = function(err, event, ...args){
422414const { 1 : res } = args ;
423415if ( ! 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+ }
427421res . statusCode = 500 ;
428422res . end ( STATUS_CODES [ 500 ] ) ;
429423} else {
430424res . destroy ( ) ;
431425}
432426break ;
433427default :
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){
493487outgoingData : 0 ,
494488keepAliveTimeoutSet : 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 ) ;
504498socket . on ( 'data' , state . onData ) ;
505499socket . on ( 'error' , socketOnError ) ;
506500socket . on ( 'end' , state . onEnd ) ;
507501socket . on ( 'close' , state . onClose ) ;
508502socket . on ( 'drain' , state . onDrain ) ;
509- parser . onIncoming = FunctionPrototypeBind ( parserOnIncoming , undefined ,
503+ parser . onIncoming = parserOnIncoming . bind ( undefined ,
510504server , socket , state ) ;
511505
512506// We are consuming socket, so it won't get any actual data
@@ -527,18 +521,18 @@ function connectionListenerInternal(server, socket){
527521parser . consume ( socket . _handle ) ;
528522}
529523parser [ kOnExecute ] =
530- FunctionPrototypeBind ( onParserExecute , undefined ,
531- server , socket , parser , state ) ;
524+ onParserExecute . bind ( undefined ,
525+ server , socket , parser , state ) ;
532526
533527parser [ 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.
539533parser [ 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 ) {
596590while ( incoming . length ) {
597- const req = ArrayPrototypeShift ( incoming ) ;
591+ const req = incoming . shift ( ) ;
598592req . destroy ( connResetException ( 'aborted' ) ) ;
599593}
600594// Abort socket._httpMessage ?
@@ -606,7 +600,7 @@ function socketOnEnd(server, socket, parser, state){
606600if ( ret instanceof Error ) {
607601debug ( '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 ) {
611605socket . end ( ) ;
612606} else if ( state . outgoing . length ) {
@@ -629,7 +623,7 @@ function socketOnData(server, socket, parser, state, d){
629623function onRequestTimeout ( socket ) {
630624socket [ 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){
649643socket . 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){
696690prepareError ( ret , parser , d ) ;
697691ret . rawPacket = d || parser . getCurrentBuffer ( ) ;
698692debug ( '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
702696const req = parser . incoming ;
@@ -719,7 +713,7 @@ function onParserExecuteCommon(server, socket, parser, state, ret, d){
719713const eventName = req . method === 'CONNECT' ? 'connect' : 'upgrade' ;
720714if ( eventName === 'upgrade' || server . listenerCount ( eventName ) > 0 ) {
721715debug ( 'SERVER have listener for %s' , eventName ) ;
722- const bodyHead = TypedArrayPrototypeSlice ( d , ret , d . length ) ;
716+ const bodyHead = d . slice ( ret , d . length ) ;
723717
724718socket . 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.
740734parser [ kOnMessageBegin ] =
741- FunctionPrototypeBind ( setRequestTimeout , undefined , server , socket ) ;
735+ setRequestTimeout . bind ( undefined , server , socket ) ;
742736}
743737
744738if ( socket . _paused && socket . parser ) {
@@ -802,7 +796,7 @@ function resOnFinish(req, res, socket, state, server){
802796// array will be empty.
803797assert ( 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 ( ) ;
839833if ( m ) {
840834m . assignSocket ( socket ) ;
841835}
@@ -861,7 +855,7 @@ function parserOnIncoming(server, socket, state, req, keepAlive){
861855return 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
880874const res = new server [ kServerResponse ] ( req ) ;
881875res . _keepAliveTimeout = server . keepAliveTimeout ;
882- res . _onPendingData = FunctionPrototypeBind ( updateOutgoingData , undefined ,
883- socket , state ) ;
876+ res . _onPendingData = updateOutgoingData . bind ( undefined ,
877+ socket , state ) ;
884878
885879res . shouldKeepAlive = keepAlive ;
886880DTRACE_HTTP_SERVER_REQUEST ( req , socket ) ;
@@ -896,16 +890,16 @@ function parserOnIncoming(server, socket, state, req, keepAlive){
896890
897891if ( socket . _httpMessage ) {
898892// There are already pending outgoing res, append.
899- ArrayPrototypePush ( state . outgoing , res ) ;
893+ state . outgoing . push ( res ) ;
900894} else {
901895res . 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.
906900res . on ( 'finish' ,
907- FunctionPrototypeBind ( resOnFinish , undefined ,
908- req , res , socket , state , server ) ) ;
901+ resOnFinish . bind ( undefined ,
902+ req , res , socket , state , server ) ) ;
909903
910904if ( req . headers . expect !== undefined &&
911905( req . httpVersionMajor === 1 && req . httpVersionMinor === 1 ) ) {
@@ -977,8 +971,8 @@ function unconsume(parser, socket){
977971
978972function generateSocketListenerWrapper ( originalFnName ) {
979973return 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 ) ;
982976if ( ! this . parser ) {
983977this . on = net . Socket . prototype . on ;
984978this . addListener = net . Socket . prototype . addListener ;
0 commit comments