public function attach(UploadStrategyInterface $strategy, $priority)
    {
        if ($this->started) {
            throw new RuntimeException('Unable during invoking.');
        }
        if (isset($this->queue[$priority])) {
            throw new InvalidArgumentException(sprintf(
                'The strategy with priority "%s" already exists.',
                $priority
            ));
        }
        $this->queue[$priority] = $strategy;
        $this->sortedQueue      = null;

        if ($this->options && ! $strategy->getOptions()) {
            $strategy->setOptions($this->options);
        }

        return $this;
    }