Challenge 1: Add Error Handling to the Internal Call — Possible Solution ==================================================================== async function createOrder(call, callback) { const { user_id, item_names } = call.request; userServiceClient.getUser({ id: user_id }, (err, user) => { if (err) { if (err.code === grpc.status.NOT_FOUND) { return callback({ code: grpc.status.NOT_FOUND, message: `Cannot create order: user ${user_id} does not exist` }); } return callback(err); } const order = database.createOrder({ customer_name: user.name, item_names }); callback(null, order); }); } WHY THIS WORKS AS AN ANSWER ------------------------------ The handler now explicitly checks err.code from the UserService call, per Chapter 5's status-code checking pattern — rather than blindly forwarding whatever error UserService returned (which might be technically correct but unclear to a client who only knows they called CreateOrder, not GetUser internally). When the specific case is NOT_FOUND, the handler returns a NEW error with a MESSAGE that makes sense from CreateOrder's own perspective ("cannot create order: user does not exist") rather than a message about GetUser that the caller never directly invoked — preserving the correct status code (NOT_FOUND is still accurate) while making the error meaningful in the context of the call the client actually made. Any OTHER error from UserService (e.g. UNAVAILABLE if UserService is down) falls through to the generic return callback(err) — still surfaced to the caller, just without the specific NOT_FOUND rewording that only makes sense for that one particular case.