diff --git a/include/ConstantAccessor.h b/include/ConstantAccessor.h
index 238b35920ce3855cf718d6b5d707460ba7c21ad0..2fb92fd4ffc28ab0443bcf9937410262d9efda8a 100644
--- a/include/ConstantAccessor.h
+++ b/include/ConstantAccessor.h
@@ -41,7 +41,9 @@ namespace ChimeraTK {
           return;
         }
         // block forever
-        boost::promise<void>().get_future().wait();
+        promise.get_future().wait();
+        // if we get here, interrupt() has been called
+        throw boost::thread_interrupted();
       }
 
       bool doReadTransferNonBlocking() override {
@@ -82,12 +84,16 @@ namespace ChimeraTK {
 
       AccessModeFlags getAccessModeFlags() const override { return {}; }
 
+      void interrupt() override { promise.set_value(); }
+
     protected:
 
       std::vector<UserType> _value;
 
       bool firstRead{true};
 
+      boost::promise<void> promise;
+
   };
 
 } /* namespace ChimeraTK */