@@ -56,7 +56,7 @@ import { BrowserElevatedFileService } from 'vs/workbench/services/files/browser/
5656import { IElevatedFileService } from 'vs/workbench/services/files/common/elevatedFileService.service'
5757import * as resources from 'vs/base/common/resources'
5858import { VSBuffer } from 'vs/base/common/buffer'
59- import { type ReadableStreamEvents , listenStream , newWriteableStream } from 'vs/base/common/stream'
59+ import { type ReadableStreamEvents , newWriteableStream } from 'vs/base/common/stream'
6060import { CancellationToken } from 'vs/base/common/cancellation'
6161import { checkServicesNotInitialized , registerServiceInitializePreParticipant } from '../lifecycle'
6262import { logsPath } from '../workbench'
@@ -762,8 +762,8 @@ class OverlayFileSystemProvider
762762 FileSystemProviderCapabilities . FileReadStream |
763763 FileSystemProviderCapabilities . FileAppend
764764
765- private async readFromDelegates < T > (
766- caller : ( delegate : IFileSystemProviderWithFileReadWriteCapability ) => Promise < T > ,
765+ private readFromDelegates < T > (
766+ caller : ( delegate : IFileSystemProviderWithFileReadWriteCapability ) => T ,
767767 token ?: CancellationToken
768768 ) {
769769 if ( this . delegates . length === 0 ) {
@@ -775,7 +775,7 @@ class OverlayFileSystemProvider
775775 throw new Error ( 'Cancelled' )
776776 }
777777 try {
778- return await caller ( delegate )
778+ return caller ( delegate )
779779 } catch ( err ) {
780780 errors . push ( err )
781781 if ( err instanceof FileSystemProviderError ) {
@@ -859,48 +859,29 @@ class OverlayFileSystemProvider
859859 opts : IFileReadStreamOptions ,
860860 token : CancellationToken
861861 ) : ReadableStreamEvents < Uint8Array > {
862- const writableStream = newWriteableStream < Uint8Array > (
863- ( data ) => VSBuffer . concat ( data . map ( ( data ) => VSBuffer . wrap ( data ) ) ) . buffer
864- )
865- this . readFromDelegates ( async ( delegate ) => {
862+ return this . readFromDelegates < ReadableStreamEvents < Uint8Array > > ( ( delegate ) => {
866863 if ( hasFileReadStreamCapability ( delegate ) ) {
867- const stream = delegate . readFileStream ( resource , opts , token )
868- await new Promise < void > ( ( resolve , reject ) => {
869- let dataReceived = false
870- listenStream (
871- stream ,
872- {
873- onData ( data ) {
874- dataReceived = true
875- void writableStream . write ( data )
876- } ,
877- onEnd ( ) {
878- writableStream . end ( )
879- resolve ( )
880- } ,
881- onError ( err ) {
882- if ( ! dataReceived ) {
883- reject ( err )
884- } else {
885- writableStream . error ( err )
886- }
887- }
888- } ,
889- token
890- )
891- } )
864+ return delegate . readFileStream ( resource , opts , token )
892865 } else {
893- let data = await this . readFile ( resource )
894- if ( typeof opts . position === 'number' || typeof opts . length === 'number' ) {
895- data = data . slice ( opts . position ?? 0 , opts . length )
896- }
897- return writableStream . end ( data )
898- }
899- } , token ) . catch ( ( err ) => {
900- writableStream . error ( err )
901- } )
866+ const writableStream = newWriteableStream < Uint8Array > (
867+ ( data ) => VSBuffer . concat ( data . map ( ( data ) => VSBuffer . wrap ( data ) ) ) . buffer
868+ )
869+ ; ( async ( ) => {
870+ try {
871+ let data = await this . readFile ( resource )
872+ if ( typeof opts . position === 'number' || typeof opts . length === 'number' ) {
873+ data = data . slice ( opts . position ?? 0 , opts . length )
874+ }
902875
903- return writableStream
876+ writableStream . end ( data )
877+ } catch ( err ) {
878+ writableStream . error ( err as Error )
879+ }
880+ } ) ( )
881+
882+ return writableStream
883+ }
884+ } , token )
904885 }
905886
906887 async readdir ( resource : URI ) : Promise < [ string , FileType ] [ ] > {
0 commit comments