@@ -55,6 +55,10 @@ const INTERCEPTOR_SYMBOL = Symbol();
55
55
const INTERCEPTOR_PROVIDER_SYMBOL = Symbol ( ) ;
56
56
const CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol ( ) ;
57
57
58
+ function isFunction < ResponseType > ( arg : Metadata | CallOptions | UnaryCallback < ResponseType > | undefined ) : arg is UnaryCallback < ResponseType > {
59
+ return Object . prototype . toString . call ( arg ) === '[object Function]'
60
+ }
61
+
58
62
export interface UnaryCallback < ResponseType > {
59
63
( err : ServiceError | null , value ?: ResponseType ) : void ;
60
64
}
@@ -198,9 +202,9 @@ export class Client {
198
202
options : CallOptions ;
199
203
callback : UnaryCallback < ResponseType > ;
200
204
} {
201
- if ( arg1 instanceof Function ) {
205
+ if ( isFunction ( arg1 ) ) {
202
206
return { metadata : new Metadata ( ) , options : { } , callback : arg1 } ;
203
- } else if ( arg2 instanceof Function ) {
207
+ } else if ( isFunction ( arg2 ) ) {
204
208
if ( arg1 instanceof Metadata ) {
205
209
return { metadata : arg1 , options : { } , callback : arg2 } ;
206
210
} else {
@@ -211,7 +215,7 @@ export class Client {
211
215
! (
212
216
arg1 instanceof Metadata &&
213
217
arg2 instanceof Object &&
214
- arg3 instanceof Function
218
+ isFunction ( arg3 )
215
219
)
216
220
) {
217
221
throw new Error ( 'Incorrect arguments passed' ) ;
@@ -671,3 +675,4 @@ export class Client {
671
675
return stream ;
672
676
}
673
677
}
678
+
0 commit comments