Icicle\Concurrent\Forking\Fork::execute PHP Method

execute() private method

private execute ( Channel $channel ) : Generator
$channel Channel
return Generator
    private function execute(Channel $channel) : \Generator
    {
        try {
            if ($this->function instanceof \Closure) {
                $function = $this->function->bindTo($channel, Channel::class);
            }
            if (empty($function)) {
                $function = $this->function;
            }
            $result = new ExitSuccess((yield $function(...$this->args)));
        } catch (\Throwable $exception) {
            $result = new ExitFailure($exception);
        }
        // Attempt to return the result.
        try {
            try {
                return yield from $channel->send($result);
            } catch (SerializationException $exception) {
                // Serializing the result failed. Send the reason why.
                return yield from $channel->send(new ExitFailure($exception));
            }
        } catch (ChannelException $exception) {
            // The result was not sendable! The parent context must have died or killed the context.
            return 0;
        }
    }