Merge pull request #137 from karalabe/fix-writer-ack-race

Ack existing writes before accepting new ones
diff --git a/leveldb/db_write.go b/leveldb/db_write.go
index fb78961..5576761 100644
--- a/leveldb/db_write.go
+++ b/leveldb/db_write.go
@@ -166,15 +166,15 @@
 	merged := 0
 	danglingMerge := false
 	defer func() {
+		for i := 0; i < merged; i++ {
+			db.writeAckC <- err
+		}
 		if danglingMerge {
 			// Only one dangling merge at most, so this is safe.
 			db.writeMergedC <- false
 		} else {
 			<-db.writeLockC
 		}
-		for i := 0; i < merged; i++ {
-			db.writeAckC <- err
-		}
 	}()
 
 	mdb, mdbFree, err := db.flush(b.size())