public function bind(callable $codeBlock)
    {
        assert($this->result === null, "'Eventually' instance may not be mutated after code-block execution.");

        return static::unit(function ($success) use ($codeBlock) {
            $this->run(function ($value) use ($codeBlock, $success) {
                return $codeBlock($value)->run($success);
            });
        });
    }