public function expandAll (array $urls, callable $callback = null)
    {
        $urls = array_values($urls);
        $expanded = [];

        // Request builder.
        $requests = function ($urls) {
            foreach ($urls as $url) {
                yield new Request('HEAD', $url);
            }
        };

        if (! is_callable($callback)) {
            $expanded = array_combine($urls, array_pad([], count($urls), null));
            $callback = function ($error, $long, $short) use (&$expanded) {
                if (! $error) {
                    $expanded[$short] = $long;
                }
            };
        }

        $client = clone $this->client;
        $client->setAccessToken(null);

        (new Pool(
            $client,
            $requests($urls),
            [
                'fulfilled' => function (ResponseInterface $response, $index) use ($urls, $callback) {
                    $short = $urls[$index];
                    $long = $response->hasHeader('Location') ? $response->getHeaderLine('Location') : null;

                    call_user_func($callback, null, $long, $short);
                },
                'rejected'  => function (RequestException $reason) use ($callback) {
                    call_user_func($callback, $reason, null, null);
                },
            ]
        ))->promise()->wait();

        return $expanded;
    }