       break;
     }
   }
+  // the car jam of blocked bytes stops HERE
+  //debugPrintf("%d\n",serialOutBufferBytesRemaining());
+  while(serialOutBufferBytesRemaining()<1)
+  {
+    if(!isSerialOut())
+      delay(1);
+    else
+      serialOutDeque();
+    yield();
+  }
   enqueSerialOut(c);
 }
 


bool ZSerial::isSerialCancelled()
{
#ifndef ZIMODEM_ESP32
  if(flowControlType == FCT_RTSCTS)
  {
    if(pinSupport[pinCTS])
      return (digitalRead(pinCTS) == ctsInactive);
  }
#endif
  return false;
}


      if(rtsActive == HIGH)
        invertMask = invertMask | UART_INVERSE_RTS;
    }
    //debugPrintf("invert = %d magic values = %d %d, RTS_HIGH=%d, RTS_LOW=%d HIGHHIGH=%d LOWLOW=%d\n",invertMask,ctsActive,rtsActive, DEFAULT_RTS_HIGH, DEFAULT_RTS_LOW, HIGH, LOW);
    if(invertMask != 0)
      uart_set_line_inverse(UART_NUM_2, invertMask);
    const int CUTOFF = 5;
