4.4ns/op by reordering reads/writes during the writer reservation
diff --git a/writer.go b/writer.go
index c10eaf7..da41bb2 100644
--- a/writer.go
+++ b/writer.go
@@ -28,11 +28,11 @@
 }
 
 func (this *Writer) Reserve(count int64) int64 {
-	for (this.previous + count - this.capacity) > this.gate {
+	this.previous = this.previous + count
+	for this.previous-this.capacity > this.gate {
 		this.gate = this.upstream.Read(0)
 	}
 
-	this.previous = this.previous + count
 	return this.previous
 }