Have Async.start retry on TransientError

When hitting a TransientError Async.start will now try to re-insert the task.

Also added tests for the error types.