Return failures from AsyncParser

AsyncParser doesn't currently return `Left` on bad input.  The result of the catch block is shadowed by the final `Right`.

Needs one test fix before it's mergeable:

    [info] - 0e is invalid *** FAILED ***
    [info]   java.lang.RuntimeException: Sync/Async parsing disagree(false, false): 0e