grpc-node
grpc-node copied to clipboard
[Suggestion] provide error types
Is your feature request related to a problem? Please describe.
Provide error types for dealing and identifing errors. If you promisify the methods and are working with async/await + try/catch, typescript mark errors as unknown.
Describe the solution you'd like
Something like this:
interface Metadata {
get: (key: string) => string[];
}
export interface GRPCError {
message: string;
code: number;
details: string;
metadata: Metadata;
}
export function isGRPCError(err: unknown): err is GRPCError {
let e = err as GRPCError;
return (
typeof e.message === "string" &&
typeof e.code === "number" &&
typeof e.details === "string" &&
typeof e.metadata === "object" &&
typeof e.metadata.get === "function"
);
}
import { GRPCClient, isGRPCError } from "src";
(async () => {
try {
let resp = await GRPCClient.myMethod();
} catch (err) { // err is unknown
if (isGRPCError(err)) {
console.error("error reason:", err.metadata.get("reason"));
}
}
})();