Try.failure can be a value of any type, not just Error

We no longer coerce non-Error values into Errors.
Also, properly throw an IllegalOperationError in Failure.value