When transferring the data (especially during upload) OnProgress seems to be called rarely, thus blocking my application. Why is it so?
The data is sent to the socket in large chunks (1Mb by default) and the progress is reported once for each chunk. Decreasing the chunk size would reduce the speed of transfer.
Receiving happens in a similar manner, but in most cases the chunks being read from the socket are much smaller, so they don't affect OnProgress a lot.