diff --git a/queue.go b/queue.go
index <HASH>..<HASH> 100644
--- a/queue.go
+++ b/queue.go
@@ -50,7 +50,7 @@ func (q *queue) peek() interface{} {
 func (q *queue) dequeue() {
 	q.head = (q.head+1) % len(q.buf)
 	q.count--
-	if len(q.buf) > minQueueLen && q.count*3 < len(q.buf) {
+	if len(q.buf) > minQueueLen && q.count*4 < len(q.buf) {
 		q.resize()
 	}
 }
Be slightly less agressive in shrinking the queue.

The power of two is marginally more efficient to calculate, and the less
agressive bounds mean we have to reallocate+copy less. It does mean we might
waste slightly more memory when a large buffer is emptied, but given that
garbage-collection means old slices aren't necessarily freed immediately
anyways, that isn't a big deal.