$onProgress =
$this->onProgress =
static function D
) use (&
$info,
$onProgress) { $info['total_time'
] =
microtime(true
) -
$info['start_time'
];
$onProgress((int) $info['size_download'
],
((int) (1 +
$info['download_content_length'
]) ?: 1
) - 1,
(array) $info);
};
$pauseDeferred =
new Deferred();
$pause =
new Success();
$throttleWatcher = null;
$this->id =
$id = self::
$nextId++;
Loop::
defer(static function D
) use ($request,
$multi,
$id, &
$info, &
$headers,
$canceller, &
$options,
$onProgress, &
$handle,
$logger, &
$pause) { return new Coroutine(self::
generateResponse($request,
$multi,
$id,
$info,
$headers,
$canceller,
$options,
$onProgress,
$handle,
$logger,
$pause));
});
$info['pause_handler'
] =
static function Dfloat
$duration) use (&
$throttleWatcher, &
$pauseDeferred, &
$pause) { if (null !==
$throttleWatcher) { Loop::
cancel($throttleWatcher);
} $pause =
$pauseDeferred->
promise();
if ($duration <= 0
) {