protected function post(Url $url, $content = [], array $headers = [])
    {
        if (is_resource($content) || is_object($content)) {
            $headers['body'] = $content;
        } elseif (is_array($content)) {
            $headers['multipart'] = $this->convertQueryArrayToMultiPart($content);
        }

        try {
            return $this->getHttpInvoker()->post((string) $url, $headers);
        } catch (RequestException $exception) {
            throw $this->convertStatusCode(
                $exception->getResponse()->getStatusCode(),
                (string) $exception->getResponse()->getBody(),
                $exception
            );
        }
    }