                 assert ld?
                 order += '3'
                 assert.equal order, expectedOrder
-                done());
+                done())
+
+    it "should allow a read request to proceed when a prior write request dies waiting for a write lock without releasing write_req", (done) ->
+      expectedOrder = "133"
+      order = ''
+      lock2.timeOut = 100
+      lock1.lockExpiration = 1000
+      lock1.obtainWriteLock().on 'locked', (ld) ->
+        assert ld?
+        order += '1'
+        # set the write_req flag without creating a lock, to simulate a dead write request
+        setWriteReq lock2, (err, doc) ->
+          assert not err
+          lock3.obtainReadLock().on 'locked', (ld) ->
+            assert ld?
+            order += '3'
+            lock3.releaseLock().on 'released', (ld) ->
+              assert ld?
+              order += '3'
+              assert.equal order, expectedOrder
+              done()
 
     it "of a new read lock shouldn't be affected by when the previous write lock was due to expire", (done) ->
       lock1.lockExpiration = 0  # Never expires

                  assert ld?
                  order += '1'
                  assert.equal order, expectedOrder
                  done());

    it "should allow a read request to proceed when a prior write request dies waiting for a dead write lock without releasing write_req", (done) ->
      expectedOrder = "133"
      order = ''
      lock2.timeOut = 100
      lock3.lockExpiration = 1000
      lock1.obtainWriteLock().on 'locked', (ld) ->
        assert ld?
        order += '1'

                  assert ld?
                  order += '1'
                  assert.equal order, expectedOrder
                  done())

  describe 'lock expiration', () ->

