





Это синхронно. Под капотом он просто выполняет цикл while
https://github.com/phpseclib/phpseclib/blob/2.0.14/phpseclib/Net/SFTP.php#L2011
$size определяется как размер локального файла:
https://github.com/phpseclib/phpseclib/blob/2.0.14/phpseclib/Net/SFTP.php#L1990
$sent начинается с 0 и увеличивается на размер данных, отправляемых во время каждого цикла.
В конце концов, количество отправленных данных сравняется (или превысит) с размером файла, и весь цикл разорвется.