a message indicating what the error was.
the underlying cause to get more details about what went wrong. When not null, it is either:
a Throwable
or a NSError on Apple platforms.