Result class represents the result of an operation. If the operation succeeds, Result will contain the result of the operation, otherwise it will contain an exception that may or may not be thrown later.