@@ -36,25 +36,14 @@ export class StreamableHttpRunner extends Runner {
3636
3737 await server . connect ( transport ) ;
3838
39- res . on ( "close" , async ( ) => {
40- try {
41- await transport . close ( ) ;
42- } catch ( error : unknown ) {
43- logger . error (
44- LogId . streamableHttpTransportCloseFailure ,
45- "streamableHttpTransport" ,
46- `Error closing transport: ${ error instanceof Error ? error . message : String ( error ) } `
47- ) ;
48- }
49- try {
50- await server . close ( ) ;
51- } catch ( error : unknown ) {
39+ res . on ( "close" , ( ) => {
40+ Promise . all ( [ transport . close ( ) , server . close ( ) ] ) . catch ( ( error : unknown ) => {
5241 logger . error (
5342 LogId . streamableHttpTransportCloseFailure ,
5443 "streamableHttpTransport" ,
5544 `Error closing server: ${ error instanceof Error ? error . message : String ( error ) } `
5645 ) ;
57- }
46+ } ) ;
5847 } ) ;
5948
6049 try {
@@ -77,31 +66,25 @@ export class StreamableHttpRunner extends Runner {
7766 } )
7867 ) ;
7968
80- app . get (
81- "/mcp" ,
82- promiseHandler ( async ( req : express . Request , res : express . Response ) => {
83- res . status ( 405 ) . json ( {
84- jsonrpc : "2.0" ,
85- error : {
86- code : JSON_RPC_ERROR_CODE_METHOD_NOT_ALLOWED ,
87- message : `method not allowed` ,
88- } ,
89- } ) ;
90- } )
91- ) ;
69+ app . get ( "/mcp" , ( req : express . Request , res : express . Response ) => {
70+ res . status ( 405 ) . json ( {
71+ jsonrpc : "2.0" ,
72+ error : {
73+ code : JSON_RPC_ERROR_CODE_METHOD_NOT_ALLOWED ,
74+ message : `method not allowed` ,
75+ } ,
76+ } ) ;
77+ } ) ;
9278
93- app . delete (
94- "/mcp" ,
95- promiseHandler ( async ( req : express . Request , res : express . Response ) => {
96- res . status ( 405 ) . json ( {
97- jsonrpc : "2.0" ,
98- error : {
99- code : JSON_RPC_ERROR_CODE_METHOD_NOT_ALLOWED ,
100- message : `method not allowed` ,
101- } ,
102- } ) ;
103- } )
104- ) ;
79+ app . delete ( "/mcp" , ( req : express . Request , res : express . Response ) => {
80+ res . status ( 405 ) . json ( {
81+ jsonrpc : "2.0" ,
82+ error : {
83+ code : JSON_RPC_ERROR_CODE_METHOD_NOT_ALLOWED ,
84+ message : `method not allowed` ,
85+ } ,
86+ } ) ;
87+ } ) ;
10588
10689 this . httpServer = await new Promise < http . Server > ( ( resolve , reject ) => {
10790 const result = app . listen ( config . httpPort , config . httpHost , ( err ?: Error ) => {
@@ -120,14 +103,15 @@ export class StreamableHttpRunner extends Runner {
120103 ) ;
121104 }
122105
123- async close ( ) : Promise < number > {
124- try {
125- await this . httpServer ?. close ( ) ;
126- return 0 ;
127- } catch ( error : unknown ) {
128- const err = error instanceof Error ? error : new Error ( String ( error ) ) ;
129- logger . error ( LogId . serverCloseFailure , "server" , `Error closing server: ${ err . message } ` ) ;
130- return 1 ;
131- }
106+ async close ( ) : Promise < void > {
107+ await new Promise < void > ( ( resolve , reject ) => {
108+ this . httpServer ?. close ( ( err ) => {
109+ if ( err ) {
110+ reject ( err ) ;
111+ return ;
112+ }
113+ resolve ( ) ;
114+ } ) ;
115+ } ) ;
132116 }
133117}
0 commit comments