Both function signatures are equivalent. In the direct case it is probably what was written in the source code, but in the re-export case the exact thing that was written is lost and rustdoc has to emit a canonical form instead.
No, look at the return type. They're both async, so that first one returns a future that returns a future that returns a result. The second one returns a future that returns a result (which looks like the correct one).