And what if `fetchUser` hits an error? At the very least pop your de-maybeifier after the async call. Or use something language standardised (like a promise in JS where you can just throw).
I'm all for a perfy shortcut / early return but this maybe just seems like an abstraction on a non-issue.