    }
    catch (err) {
      actions.resultException(req, res, err);
+diff --git a/lib/Basics/ConditionLocker.cpp b/lib/Basics/ConditionLocker.cpp
+index e9469e6..097ef7b 100644
+--- a/lib/Basics/ConditionLocker.cpp
++++ b/lib/Basics/ConditionLocker.cpp
+@@ -96,6 +96,14 @@ void ConditionLocker::wait () {
+ }
+ 
+ ////////////////////////////////////////////////////////////////////////////////
++/// @brief waits for an event to occur, with a timeout
++////////////////////////////////////////////////////////////////////////////////
++
++bool ConditionLocker::wait (uint64_t delay) {
++  return _conditionVariable->wait(delay);
++}
++
++////////////////////////////////////////////////////////////////////////////////
+ /// @brief broadcasts an event
+ ////////////////////////////////////////////////////////////////////////////////
+ 
+diff --git a/lib/Basics/ConditionLocker.h b/lib/Basics/ConditionLocker.h
+index 4114fe3..543f389 100644
+--- a/lib/Basics/ConditionLocker.h
++++ b/lib/Basics/ConditionLocker.h
+@@ -139,6 +139,12 @@ namespace triagens {
+         void wait ();
+ 
+ ////////////////////////////////////////////////////////////////////////////////
++/// @brief waits for an event to occur, using a timeout
++////////////////////////////////////////////////////////////////////////////////
++
++        bool wait (uint64_t);
++
++////////////////////////////////////////////////////////////////////////////////
+ /// @brief broadcasts an event
+ ////////////////////////////////////////////////////////////////////////////////
+ 

     TRI_EndUsageDataShadowData(vocbase->_cursors, cursor);
     return scope.Close(v8::Number::New(length));
   }
@@ -1666,6 +1664,32 @@ static v8::Handle<v8::Value> JS_HasNextGeneralCursor (v8::Arguments const& argv)
 }
 
 ////////////////////////////////////////////////////////////////////////////////

 /// @brief get a (persistent) cursor by its id
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -1707,7 +1790,7 @@ static v8::Handle<v8::Value> JS_Cursor (v8::Arguments const& argv) {
                          TRI_CreateErrorObject(TRI_ERROR_CURSOR_NOT_FOUND,
                                                "disposed or unknown cursor")));
   }
