It turned out, however, that the simple flow control he implemented was not adaptive enough to simultaneously accommodate both low-latency/low bandwidth and high-latency/high-bandwidth connection.
For resumeable uploads to work efficiently for both cases, we implemented TCP/IP-style congestion control (e.g. slow start window size scaling and exponential back-off retry timeout), but over http POST requests instead of UDP packet sends.
Are you using resumable.js[1] or is it a custom implementation?
[1] https://github.com/23/resumable.js