File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2362,6 +2362,44 @@ export default class YouTubeSource {
23622362 return
23632363 }
23642364
2365+ if ( isAborted && stream . writableNeedDrain ) {
2366+ logger (
2367+ 'debug' ,
2368+ 'YouTube' ,
2369+ `Stream is paused/backed up, skipping recovery (cause: ${ causeError ?. message } ). Player will recover on resume.`
2370+ )
2371+ return
2372+ }
2373+
2374+ if ( isAborted && stream . writableNeedDrain ) {
2375+ logger (
2376+ 'debug' ,
2377+ 'YouTube' ,
2378+ `Stream is paused/backed up, waiting for drain before recovery (cause: ${ causeError ?. message } )`
2379+ )
2380+ await new Promise < void > ( ( resolve ) => {
2381+ const onDrain = ( ) => {
2382+ stream . off ( 'drain' , onDrain )
2383+ resolve ( )
2384+ }
2385+ stream . once ( 'drain' , onDrain )
2386+ const timeout = setTimeout ( ( ) => {
2387+ stream . off ( 'drain' , onDrain )
2388+ resolve ( )
2389+ } , 60000 )
2390+ if ( typeof timeout . unref === 'function' ) timeout . unref ( )
2391+ } )
2392+ if ( destroyed || cancelSignal . aborted || stream . destroyed ) return
2393+ if ( stream . writableNeedDrain ) {
2394+ logger (
2395+ 'debug' ,
2396+ 'YouTube' ,
2397+ 'Stream still backed up after drain wait, deferring recovery until resume'
2398+ )
2399+ return
2400+ }
2401+ }
2402+
23652403 try {
23662404 const newUrlData = await this . getTrackUrl ( decodedTrack , null , true )
23672405
You can’t perform that action at this time.
0 commit comments