current-buffer returns a stale value immediately after display-buffer returns.
The following snippet (saved in x.el), when loaded in 25.1.1 using [google-emacs -Q -l x.el], generates the message:
*scratch* *scratch* *Help*
demonstrating that (current-buffer) has a stale value after describe-key returns (I expect post to match the [run-at-time 0] value, not the pre value).
(progn
(setq display-buffer-alist '(("." (lambda (buffer alist) (switch-to-buffer buffer)))))
(setq pre (current-buffer))
(describe-key (kbd "SPC"))
(setq post (current-buffer))
(run-at-time 0 nil (lambda () (message "%s %s %s" pre post (current-buffer)))))
Cheers,
-a