public function pour(): void
    {
        $provider = $this->source->getCask();
        foreach ($provider as $dataBag) {
            try {
                $this->pipeLine->rewind();
                while ($this->pipeLine->valid()) {
                    $handler = $this->pipeLine->current();
                    $dataBag = $handler->pass($dataBag);
                    $this->pipeLine->next();
                }
            } catch (FlowTerminationException $exception) {
                $this->emitter->emit('valve_closed', $exception->getIdentifier(), $dataBag);
            }
        }
        $this->emitter->emit('empty_cask');
    }