pupnp: lock after dispatch

Change-Id: I4c99192c95a82f6a5a386968075cb8991c807c8d
diff --git a/src/upnp/protocol/natpmp/nat_pmp.cpp b/src/upnp/protocol/natpmp/nat_pmp.cpp
index 633f580..c5e8ce6 100644
--- a/src/upnp/protocol/natpmp/nat_pmp.cpp
+++ b/src/upnp/protocol/natpmp/nat_pmp.cpp
@@ -115,26 +115,26 @@
 void
 NatPmp::terminate(std::condition_variable& cv)
 {
+    if (logger_) logger_->debug("NAT-PMP: Terminate instance {}", fmt::ptr(this));
+
     initialized_ = false;
     observer_ = nullptr;
 
-    {
-        std::lock_guard<std::mutex> lock(natpmpMutex_);
-        shutdownComplete_ = true;
-        cv.notify_one();
-    }
+    std::lock_guard<std::mutex> lock(natpmpMutex_);
+    shutdownComplete_ = true;
+    cv.notify_one();
 }
 
 void
 NatPmp::terminate()
 {
-    std::unique_lock<std::mutex> lk(natpmpMutex_);
     std::condition_variable cv {};
 
     ioContext->dispatch([&] {
         terminate(cv);
     });
 
+    std::unique_lock<std::mutex> lk(natpmpMutex_);
     if (cv.wait_for(lk, std::chrono::seconds(10), [this] { return shutdownComplete_; })) {
         if (logger_) logger_->debug("NAT-PMP: Shutdown completed");
     } else {