diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 7b1a2a83..e149c20 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -115,8 +115,10 @@
   int64_t start_time_;
 };
 
-UDPPort::AddressResolver::AddressResolver(rtc::PacketSocketFactory* factory)
-    : socket_factory_(factory) {}
+UDPPort::AddressResolver::AddressResolver(
+    rtc::PacketSocketFactory* factory,
+    std::function<void(const rtc::SocketAddress&, int)> done_callback)
+    : socket_factory_(factory), done_(std::move(done_callback)) {}
 
 UDPPort::AddressResolver::~AddressResolver() {
   for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end();
@@ -159,7 +161,7 @@
   for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end();
        ++it) {
     if (it->second == resolver) {
-      SignalDone(it->first, resolver->GetError());
+      done_(it->first, resolver->GetError());
       return;
     }
   }
@@ -434,8 +436,10 @@
 
 void UDPPort::ResolveStunAddress(const rtc::SocketAddress& stun_addr) {
   if (!resolver_) {
-    resolver_.reset(new AddressResolver(socket_factory()));
-    resolver_->SignalDone.connect(this, &UDPPort::OnResolveResult);
+    resolver_.reset(new AddressResolver(
+        socket_factory(), [&](const rtc::SocketAddress& input, int error) {
+          OnResolveResult(input, error);
+        }));
   }
 
   RTC_LOG(LS_INFO) << ToString() << ": Starting STUN host lookup for "
diff --git a/p2p/base/stun_port.h b/p2p/base/stun_port.h
index aa57d66..45150ae 100644
--- a/p2p/base/stun_port.h
+++ b/p2p/base/stun_port.h
@@ -11,6 +11,7 @@
 #ifndef P2P_BASE_STUN_PORT_H_
 #define P2P_BASE_STUN_PORT_H_
 
+#include <functional>
 #include <map>
 #include <memory>
 #include <string>
@@ -20,8 +21,6 @@
 #include "p2p/base/stun_request.h"
 #include "rtc_base/async_packet_socket.h"
 
-// TODO(mallinath) - Rename stunport.cc|h to udpport.cc|h.
-
 namespace cricket {
 
 // Lifetime chosen for STUN ports on low-cost networks.
@@ -183,7 +182,9 @@
   // resolve one address per instance.
   class AddressResolver : public sigslot::has_slots<> {
    public:
-    explicit AddressResolver(rtc::PacketSocketFactory* factory);
+    explicit AddressResolver(
+        rtc::PacketSocketFactory* factory,
+        std::function<void(const rtc::SocketAddress&, int)> done_callback);
     ~AddressResolver() override;
 
     void Resolve(const rtc::SocketAddress& address);
@@ -191,11 +192,6 @@
                             int family,
                             rtc::SocketAddress* output) const;
 
-    // The signal is sent when resolving the specified address is finished. The
-    // first argument is the input address, the second argument is the error
-    // or 0 if it succeeded.
-    sigslot::signal2<const rtc::SocketAddress&, int> SignalDone;
-
    private:
     typedef std::map<rtc::SocketAddress, rtc::AsyncResolverInterface*>
         ResolverMap;
@@ -204,6 +200,10 @@
 
     rtc::PacketSocketFactory* socket_factory_;
     ResolverMap resolvers_;
+    // The function is called when resolving the specified address is finished.
+    // The first argument is the input address, the second argument is the error
+    // or 0 if it succeeded.
+    std::function<void(const rtc::SocketAddress&, int)> done_;
   };
 
   // DNS resolution of the STUN server.
