To be fair, if reconnectAndGetConn returns a compatible error type, this would presumably allow us to try to recover, right?
let? Ok(r) = switch getConn() {
| Ok(x) => Ok(x)
| Error(ErrorA) =>
reconnectAndGetConn() // hypothetical recover
| Error(ErrorB) =>
Error(ErrorB) // not possible?
}