public override void WriteBytes(byte[] b, int offset, int length)
{
long before = DateTime.Now.Ticks;
// TODO: sometimes, write only half the bytes, then
// sleep, then 2nd half, then sleep, so we sometimes
// interrupt having only written not all bytes
@delegate.WriteBytes(b, offset, length);
TimeElapsed += (DateTime.Now.Ticks - before) * 100;
PendingBytes += length;
Sleep(GetDelay(false));
}