We're already hitting a synchronize for `q.full?` what if we have it yield to a block when present 

```
q.full? do
  flush
end
```

Maybe alias `full?` to `when_full` or something else to make the code more human readable? `q.when_full { flush }`

I think speed is acceptable here if you don't like that.