Start using Result.Error for parse failures

... and convert these into failed threads inside the functor.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>