I want to slightly alter the behavior of `#'counsel-fzf` by **locally** changing the definition of `#'counsel-fzf-action` which activates in the end of the definition of the former. See the source code of `#'counsel-fzf` (please pay attention to the second last line):

```
(defun counsel-fzf (&optional initial-input initial-directory fzf-prompt)
 (interactive
 (let ((fzf-basename (car (split-string counsel-fzf-cmd))))
 (list nil
 (when current-prefix-arg
 (counsel-read-directory-name (concat
 fzf-basename
 " in directory: "))))))
 (counsel-require-program counsel-fzf-cmd)
 (setq counsel--fzf-dir
 (or initial-directory
 (funcall counsel-fzf-dir-function)))
 (ivy-read (or fzf-prompt "fzf: ")
 #'counsel-fzf-function
 :initial-input initial-input
 :re-builder #'ivy--regex-fuzzy
 :dynamic-collection t
 :action #'counsel-fzf-action ; <=== This is what I'll alter
 :caller 'counsel-fzf))
```

To slightly alter it, I tried nulling `#'counsel-fzf-action` locally by `cl-flet`.

```
(cl-flet ((counsel-fzf-action (x) nil))
 (counsel-fzf))
```

### Question

However, the global function `#'counsel-fzf-action` is executed instead of the local one. This confuses me because shouldn't the local function gets favored first?