@@ -75,7 +75,7 @@ class RPCClient<M extends ClientManifest> {
7575 case 'SERVER' :
7676 return ( params ) => this . serverStreamCaller ( method , params ) ;
7777 case 'CLIENT' :
78- return ( f ) => this . clientStreamCaller ( method , f ) ;
78+ return ( ) => this . clientStreamCaller ( method ) ;
7979 case 'DUPLEX' :
8080 return ( f ) => this . duplexStreamCaller ( method , f ) ;
8181 case 'RAW' :
@@ -142,8 +142,6 @@ class RPCClient<M extends ClientManifest> {
142142 return this . rawMethodsProxy as MapRawCallers < M > ;
143143 }
144144
145- // Convenience methods
146-
147145 @ready ( new rpcErrors . ErrorRpcDestroyed ( ) )
148146 public async unaryCaller < I extends JSONValue , O extends JSONValue > (
149147 method : string ,
@@ -183,21 +181,22 @@ class RPCClient<M extends ClientManifest> {
183181 @ready ( new rpcErrors . ErrorRpcDestroyed ( ) )
184182 public async clientStreamCaller < I extends JSONValue , O extends JSONValue > (
185183 method : string ,
186- f : ( output : Promise < O > ) => AsyncIterable < I | undefined > ,
187- ) : Promise < void > {
188- const callerInterface = await this . rawClientStreamCaller < I , O > ( method ) ;
189- const writer = callerInterface . writable . getWriter ( ) ;
190- let running = true ;
191- for await ( const value of f ( callerInterface . output ) ) {
192- if ( value === undefined ) {
193- await writer . close ( ) ;
194- running = false ;
184+ ) : Promise < {
185+ output : Promise < O > ;
186+ writable : WritableStream < I > ;
187+ } > {
188+ const callerInterface = await this . rawDuplexStreamCaller < I , O > ( method ) ;
189+ const reader = callerInterface . readable . getReader ( ) ;
190+ const output = reader . read ( ) . then ( ( { value, done } ) => {
191+ if ( done ) {
192+ throw new rpcErrors . ErrorRpcRemoteError ( 'Stream ended before response' ) ;
195193 }
196- // Write while running otherwise consume until ended
197- if ( running ) await writer . write ( value ) ;
198- }
199- // If ended before finish running then close writer
200- if ( running ) await writer . close ( ) ;
194+ return value ;
195+ } ) ;
196+ return {
197+ output,
198+ writable : callerInterface . writable ,
199+ } ;
201200 }
202201
203202 @ready ( new rpcErrors . ErrorRpcDestroyed ( ) )
@@ -263,29 +262,6 @@ class RPCClient<M extends ClientManifest> {
263262 tempWriter . releaseLock ( ) ;
264263 return streamPair ;
265264 }
266-
267- protected async rawClientStreamCaller <
268- I extends JSONValue ,
269- O extends JSONValue ,
270- > (
271- method : string ,
272- ) : Promise < {
273- output : Promise < O > ;
274- writable : WritableStream < I > ;
275- } > {
276- const callerInterface = await this . rawDuplexStreamCaller < I , O > ( method ) ;
277- const reader = callerInterface . readable . getReader ( ) ;
278- const output = reader . read ( ) . then ( ( { value, done } ) => {
279- if ( done ) {
280- throw new rpcErrors . ErrorRpcRemoteError ( 'Stream ended before response' ) ;
281- }
282- return value ;
283- } ) ;
284- return {
285- output,
286- writable : callerInterface . writable ,
287- } ;
288- }
289265}
290266
291267export default RPCClient ;
0 commit comments