* the comment "don't make the caller wait" applies to both branches
of that if clause, and having it on one branch implies the other
does make the caller wait
* there's no reason for DeniedBy to start with a capital: it's a
method on a private struct and it's not part of an interface.