diff --git a/http2/adapter/nghttp2_callbacks.cc b/http2/adapter/nghttp2_callbacks.cc
index 2568179..8774873 100644
--- a/http2/adapter/nghttp2_callbacks.cc
+++ b/http2/adapter/nghttp2_callbacks.cc
@@ -186,7 +186,7 @@
   return bytes_to_send;
 }
 
-nghttp2_session_callbacks* Create() {
+nghttp2_session_callbacks_unique_ptr Create() {
   nghttp2_session_callbacks* callbacks;
   nghttp2_session_callbacks_new(&callbacks);
 
@@ -201,7 +201,7 @@
                                                             &OnDataChunk);
   nghttp2_session_callbacks_set_on_stream_close_callback(callbacks,
                                                          &OnStreamClosed);
-  return callbacks;
+  return MakeCallbacksPtr(callbacks);
 }
 
 }  // namespace callbacks
diff --git a/http2/adapter/nghttp2_callbacks.h b/http2/adapter/nghttp2_callbacks.h
index ba10e13..5fbaee0 100644
--- a/http2/adapter/nghttp2_callbacks.h
+++ b/http2/adapter/nghttp2_callbacks.h
@@ -2,6 +2,7 @@
 #define QUICHE_HTTP2_ADAPTER_NGHTTP2_CALLBACKS_H_
 
 #include "http2/adapter/http2_protocol.h"
+#include "http2/adapter/nghttp2_util.h"
 #include "third_party/nghttp2/src/lib/includes/nghttp2/nghttp2.h"
 
 namespace http2 {
@@ -47,7 +48,7 @@
                                    nghttp2_data_source* source,
                                    void* user_data);
 
-nghttp2_session_callbacks* Create();
+nghttp2_session_callbacks_unique_ptr Create();
 
 }  // namespace callbacks
 }  // namespace adapter
diff --git a/http2/adapter/nghttp2_session.cc b/http2/adapter/nghttp2_session.cc
index 6d997a9..dec4c03 100644
--- a/http2/adapter/nghttp2_session.cc
+++ b/http2/adapter/nghttp2_session.cc
@@ -13,7 +13,7 @@
 }  // namespace
 
 NgHttp2Session::NgHttp2Session(Perspective perspective,
-                               nghttp2_session_callbacks* callbacks,
+                               nghttp2_session_callbacks_unique_ptr callbacks,
                                nghttp2_option* options,
                                void* userdata)
     : session_(MakeSessionPtr(nullptr)),
@@ -22,15 +22,14 @@
   nghttp2_session* session;
   switch (perspective) {
     case Perspective::kClient:
-      nghttp2_session_client_new2(&session, callbacks, userdata,
+      nghttp2_session_client_new2(&session, callbacks.get(), userdata,
                                   options_.get());
       break;
     case Perspective::kServer:
-      nghttp2_session_server_new2(&session, callbacks, userdata,
+      nghttp2_session_server_new2(&session, callbacks.get(), userdata,
                                   options_.get());
       break;
   }
-  nghttp2_session_callbacks_del(callbacks);
   session_.reset(session);
 }
 
diff --git a/http2/adapter/nghttp2_session.h b/http2/adapter/nghttp2_session.h
index bf1e01b..5dc1ddf 100644
--- a/http2/adapter/nghttp2_session.h
+++ b/http2/adapter/nghttp2_session.h
@@ -12,7 +12,7 @@
 class NgHttp2Session : public Http2Session {
  public:
   NgHttp2Session(Perspective perspective,
-                 nghttp2_session_callbacks* callbacks,
+                 nghttp2_session_callbacks_unique_ptr callbacks,
                  nghttp2_option* options,
                  void* userdata);
   ~NgHttp2Session() override;
diff --git a/http2/adapter/nghttp2_session_test.cc b/http2/adapter/nghttp2_session_test.cc
index 62a255e..9491412 100644
--- a/http2/adapter/nghttp2_session_test.cc
+++ b/http2/adapter/nghttp2_session_test.cc
@@ -56,9 +56,10 @@
     return options;
   }
 
-  nghttp2_session_callbacks* CreateCallbacks() {
-    nghttp2_session_callbacks* callbacks = callbacks::Create();
-    nghttp2_session_callbacks_set_send_callback(callbacks, &SaveSessionOutput);
+  nghttp2_session_callbacks_unique_ptr CreateCallbacks() {
+    nghttp2_session_callbacks_unique_ptr callbacks = callbacks::Create();
+    nghttp2_session_callbacks_set_send_callback(callbacks.get(),
+                                                &SaveSessionOutput);
     return callbacks;
   }
 
diff --git a/http2/adapter/nghttp2_util.cc b/http2/adapter/nghttp2_util.cc
index f457bb6..6dd218e 100644
--- a/http2/adapter/nghttp2_util.cc
+++ b/http2/adapter/nghttp2_util.cc
@@ -13,11 +13,15 @@
 namespace {
 
 void DeleteCallbacks(nghttp2_session_callbacks* callbacks) {
-  nghttp2_session_callbacks_del(callbacks);
+  if (callbacks) {
+    nghttp2_session_callbacks_del(callbacks);
+  }
 }
 
 void DeleteSession(nghttp2_session* session) {
-  nghttp2_session_del(session);
+  if (session) {
+    nghttp2_session_del(session);
+  }
 }
 
 }  // namespace
