$req->getConfig()->set("id", $i);
    $requests[] = $req;
}
$completeFn = function (Pool $pool, RequestInterface $request, ResponseInterface $response) {
    echo "Success with " . $request->getConfig()->get("proxy") . " on {$request->getConfig()->get("id")}. request\n";
};
$errorFn = function (Pool $pool, RequestInterface $request, ResponseInterface $response = null, Exception $exception) {
    if ($exception instanceof NoProxiesLeftException) {
        echo "All proxies are blocked, terminating...\n";
        $pool->cancel();
    } else {
        echo "Failed with " . $request->getConfig()->get("proxy") . " on {$request->getConfig()->get("id")}. request: " . $exception->getMessage() . "\n";
    }
};
$pool = new Pool($client, $requests, ["pool_size" => 3, "end" => function (EndEvent $event) use(&$pool, $completeFn, $errorFn) {
    $request = $event->getRequest();
    $response = $event->getResponse();
    $exception = $event->getException();
    if ($exception === null) {
        $completeFn($pool, $request, $response);
    } else {
        $errorFn($pool, $request, $response, $exception);
    }
}]);
$pool->wait();
/** @var \paslandau\GuzzleRotatingProxySubscriber\Proxy\RotatingProxy $proxy */
$proxies = $rotator->getProxies();
echo "\nProxy usage:\n";
foreach ($proxies as $proxy) {
    echo $proxy->getProxyString() . "\t made " . $proxy->getTotalRequests() . " requests in total\n";
}