diff --git a/lib/mongo/server/monitor.rb b/lib/mongo/server/monitor.rb
index <HASH>..<HASH> 100644
--- a/lib/mongo/server/monitor.rb
+++ b/lib/mongo/server/monitor.rb
@@ -140,7 +140,7 @@ module Mongo
       #
       # @since 2.0.0
       def stop!
-        @thread.kill && @thread.stop?
+        connection.disconnect! && @thread.kill && @thread.stop?
       end
 
       # Restarts the server monitor unless the current thread is alive.
diff --git a/spec/mongo/server/monitor_spec.rb b/spec/mongo/server/monitor_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/mongo/server/monitor_spec.rb
+++ b/spec/mongo/server/monitor_spec.rb
@@ -171,4 +171,25 @@ describe Mongo::Server::Monitor do
       end
     end
   end
+
+  describe '#stop' do
+
+    let(:monitor) do
+      described_class.new(address, listeners, TEST_OPTIONS)
+    end
+
+    let!(:thread) do
+      monitor.run!
+    end
+
+    before do
+      expect(monitor.connection).to receive(:disconnect!).and_call_original
+      monitor.stop!
+      sleep(1)
+    end
+
+    it 'kills the monitor thread' do
+      expect(thread.stop?).to be(true)
+    end
+  end
 end
RUBY-<I> Disconnect the connection in monitor#stop