diff --git a/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjector.cpp b/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjector.cpp
index f2731602ef43dfd6bb493ba746dc094167376632..92496871b1ac13fca5b292c58360e34d6819c775 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjector.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/RecallTaskInjector.cpp
@@ -62,11 +62,6 @@ RecallTaskInjector::~RecallTaskInjector(){
 void RecallTaskInjector::finish(){
   cta::threading::MutexLocker ml(m_producerProtection);
   m_queue.push(Request());
-  /* Since this is the ending request, the RecallTaskInjector does not need
-   * to wait to have access to the drive
-   */
-  if (m_useRAO)
-    setPromise();
 }
 //------------------------------------------------------------------------------
 //requestInjection
diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
index a523f64500ba5ea1baa6597e52bab54c85c3e0ae..f17a567ef1099dbb071087dfb53f3e77223f2c12 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.cpp
@@ -156,12 +156,10 @@ castor::tape::tapeserver::daemon::TapeReadSingleThread::popAndRequestMoreJobs(){
     vrp = m_tasks.popGetSize();
   // If we just passed (down) the half full limit, ask for more
   // (the remaining value is after pop)
-  isLastTask = false;
   if(0 == vrp.remaining) {
     // This is a last call: if the task injector comes up empty on this
     // one, he'll call it the end.
     m_taskInjector->requestInjection(true);
-    isLastTask = true;
   } else if (vrp.remaining + 1 == m_maxFilesRequest/2) {
     // This is not a last call
     m_taskInjector->requestInjection(false);
@@ -322,11 +320,6 @@ void castor::tape::tapeserver::daemon::TapeReadSingleThread::run() {
         // This can lead the the session being marked as corrupt, so we test
         // it in the while loop
         task->execute(*rs, m_logContext, m_watchdog,m_stats,timer);
-        if (m_useRAO && isLastTask) {
-          // After the execution of all recalls, the TapeReadSingleThread
-          // passes the access to the drive to the RecallTaskInjector
-          m_taskInjector->setPromise();
-        }
         // Transmit the statistics to the watchdog thread
         m_watchdog.updateStatsWithoutDeliveryTime(m_stats);
         // The session could have been corrupted (failed positioning)
diff --git a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.hpp b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.hpp
index f9675711ecad23283267890d39553a66f48531d1..f686faa39c849380e6c3a2c97f937255717d94f3 100644
--- a/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.hpp
+++ b/tapeserver/castor/tape/tapeserver/daemon/TapeReadSingleThread.hpp
@@ -152,7 +152,6 @@ private:
    * Access Order
    */
   bool m_useRAO;
-  bool isLastTask;
   /// Helper virtual function to access the watchdog from parent class
   virtual void countTapeLogError(const std::string & error) { 
     m_watchdog.addToErrorCount(error);