diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h
index 5922e2581a98973e5bb9f53acfeb634bc27d86fb..9ac92a00dd9f4c3ff0078fd8217e7fcc016437ab 100644
--- a/include/grpc++/impl/call.h
+++ b/include/grpc++/impl/call.h
@@ -112,11 +112,6 @@ class CallOpBuffer final : public CompletionQueueTag {
   grpc_metadata *trailing_metadata_ = nullptr;
 };
 
-class CCallDeleter {
- public:
-  void operator()(grpc_call *c);
-};
-
 // Channel and Server implement this to allow them to hook performing ops
 class CallHook {
  public:
@@ -127,17 +122,18 @@ class CallHook {
 // Straightforward wrapping of the C call object
 class Call final {
  public:
+  /* call is owned by the caller */
   Call(grpc_call *call, CallHook *call_hook_, CompletionQueue *cq);
 
   void PerformOps(CallOpBuffer *buffer);
 
-  grpc_call *call() { return call_.get(); }
+  grpc_call *call() { return call_; }
   CompletionQueue *cq() { return cq_; }
 
  private:
   CallHook *call_hook_;
   CompletionQueue *cq_;
-  std::unique_ptr<grpc_call, CCallDeleter> call_;
+  grpc_call* call_;
 };
 
 }  // namespace grpc
diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc
index 61488553374d535c68f2030e4cc4f503639e35bf..84791aa0a4646acb98258a109a8f03a6eb212b9b 100644
--- a/src/cpp/common/call.cc
+++ b/src/cpp/common/call.cc
@@ -243,10 +243,6 @@ void CallOpBuffer::FinalizeResult(void **tag, bool *status) {
   }
 }
 
-void CCallDeleter::operator()(grpc_call* c) {
-  grpc_call_destroy(c);
-}
-
 Call::Call(grpc_call* call, CallHook *call_hook, CompletionQueue* cq)
     : call_hook_(call_hook), cq_(cq), call_(call) {}
 
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index 4392739367593488d28851e23435537a7981cc7e..2ee858154861c92ce679de89b0be7ebdb89e5ed1 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -157,6 +157,10 @@ class Server::MethodRequestData final : public CompletionQueueTag {
       mrd->request_metadata_.count = 0;
     }
 
+    ~CallData() {
+      grpc_call_destroy(call_.call());
+    }
+
     void Run() {
       std::unique_ptr<google::protobuf::Message> req;
       std::unique_ptr<google::protobuf::Message> res;