diff --git a/src/objective-c/GRPCClient/GRPCCall.m b/src/objective-c/GRPCClient/GRPCCall.m
index 279ef935d509cb26d6175dd580b10ca95ef68953..d92a9d1b377fb77014541df9a015e1366a1eb80b 100644
--- a/src/objective-c/GRPCClient/GRPCCall.m
+++ b/src/objective-c/GRPCClient/GRPCCall.m
@@ -319,9 +319,12 @@ NSString * const kGRPCStatusMetadataKey = @"io.grpc.StatusMetadataKey";
     if (strongSelf) {
       [strongSelf->_responseMetadata addEntriesFromDictionary:trailers];
 
-      NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:error.userInfo];
-      userInfo[kGRPCStatusMetadataKey] = strongSelf->_responseMetadata;
-      error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo];
+      if (error) {
+        NSMutableDictionary *userInfo =
+            [NSMutableDictionary dictionaryWithDictionary:error.userInfo];
+        userInfo[kGRPCStatusMetadataKey] = strongSelf->_responseMetadata;
+        error = [NSError errorWithDomain:error.domain code:error.code userInfo:userInfo];
+      }
       [strongSelf finishWithError:error];
     }
   }];