private function callEndpoint($tracking)
    {
        $trackingHolder = is_array($tracking) ? $tracking : array($tracking);
        $trackingCollection = new Request\TrackingRequestCollection();

        foreach ($trackingHolder as $tracking) {
            if (!$tracking instanceof Tracking\AbstractTracking) {
                continue;
            }

            $payloadData = $this->getTrackingPayloadData($tracking);

            $trackingRequest = new Request\TrackingRequest($payloadData);
            $trackingCollection->add($trackingRequest);
        }

        $adapterOptions = $this->getOption('adapter');
        $clientAdapter = $this->clientAdapter;
        $clientAdapter->setOptions($adapterOptions);

        return $clientAdapter->send($this->apiEndpointUrl, $trackingCollection);
    }