void onQueueFull(int iter, boolean timed, long nanos) throws SuspendExecution, InterruptedException, TimeoutException {
switch (overflowPolicy) {
case DROP:
return;
case THROW:
throw new QueueCapacityExceededException();
case BLOCK:
if (timed) {
if (nanos > 0) {
if (sendersSync.await(iter, nanos, TimeUnit.NANOSECONDS))
return;
}
throw new TimeoutException();
} else
sendersSync.await(iter);
break;
case BACKOFF:
if (iter > MAX_SEND_RETRIES)
throw new QueueCapacityExceededException();
if (iter > 5)
Strand.sleep((iter - 5) * 5);
else if (iter > 4)
Strand.yield();
}