diff --git a/src/client.cpp b/src/client.cpp
index 247980e100565a602dfa1cec7315c67b8416be69..5a063f8b647850c96d5a219e6894235ac9c6a22c 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -68,7 +68,6 @@ Client::on_connect(std::shared_ptr<Session> s, boost::system::error_code ec)
         }
 
         // Check if the request is already cancelled and we shouldn't move forward.
-        std::unique_lock<std::mutex> cancel_lock(s->cancel_guard);
         if (s->is_cancelled)
                 return on_request_complete(s);
 
@@ -87,7 +86,6 @@ Client::on_handshake(std::shared_ptr<Session> s, boost::system::error_code ec)
         }
 
         // Check if the request is already cancelled and we shouldn't move forward.
-        std::unique_lock<std::mutex> cancel_lock(s->cancel_guard);
         if (s->is_cancelled)
                 return on_request_complete(s);
 
@@ -112,7 +110,6 @@ Client::on_write(std::shared_ptr<Session> s,
                 return s->on_failure(s->id, ec);
         }
 
-        std::unique_lock<std::mutex> cancel_lock(s->cancel_guard);
         if (s->is_cancelled)
                 return on_request_complete(s);
 
@@ -156,10 +153,8 @@ Client::cancel_request(RequestID request_id)
         std::unique_lock<std::mutex> lock(active_sessions_guard_);
 
         auto it = active_sessions_.find(request_id);
-        if (it != active_sessions_.end()) {
-                std::unique_lock<std::mutex> cancel_lock(it->second->cancel_guard);
+        if (it != active_sessions_.end())
                 it->second->is_cancelled = true;
-        }
 }
 
 void
diff --git a/src/session.hpp b/src/session.hpp
index b126c04ca1f79c584ffc728bf3eb11e57591fe52..277b07a79bdc30b3aaec302b6d53da5a16f9707b 100644
--- a/src/session.hpp
+++ b/src/session.hpp
@@ -1,10 +1,10 @@
 #pragma once
 
+#include <atomic>
 #include <boost/asio.hpp>
 #include <boost/asio/ssl.hpp>
 #include <boost/beast.hpp>
 #include <memory>
-#include <mutex>
 
 namespace mtx {
 namespace client {
@@ -62,9 +62,7 @@ struct Session
         //! Function to be called when the request fails.
         FailureCallback on_failure;
         //! Whether or not the request has been cancelled.
-        bool is_cancelled;
-        //! Retricting access to the cancelled bool.
-        std::mutex cancel_guard;
+        std::atomic_bool is_cancelled;
 };
 }
 }