It is annoying to always unwrap a value from an Either only to be forced to handle the failure case.
Replace the Either value of the failure case with throwing an exception:
// ...
if (numberOfSeats > 1) {
Right(makeReservation(numberOfSeats))
} else {
Left(NotEnoughSeats)
}// This is better because the caller is not forced to handle failure
if (numberOfSeats > 1) {
makeReservation(numberOfSeats)
} else {
throw new Exception("not enough seats")
}