diff --git a/src/http.cpp b/src/http.cpp
index cff3662dfbc6a3ddd0668970e21cae41d88f5f4a..a27ae1838d16d57b30cd730cf71db0a13d10d039 100644
--- a/src/http.cpp
+++ b/src/http.cpp
@@ -352,7 +352,7 @@ Resolver::add_callback(ResolverCb cb)
 {
     std::lock_guard<std::mutex> lock(mutex_);
     if (!completed_)
-        cbs_.push(std::move(cb));
+        cbs_.emplace(std::move(cb));
     else
         cb(ec_, endpoints_);
 }
@@ -587,7 +587,7 @@ void
 Request::notify_state_change(const State state)
 {
     state_ = state;
-    if (cbs_->on_state_change)
+    if (cbs_ and cbs_->on_state_change)
         cbs_->on_state_change(state, response_);
 }