AsyncValue error check

AsyncValue now keeps seperate variable for exceptions,
can check if result was error, and does not rely on type checking
before getting result

Wrote tests to match and have 100% coverage