Retries

Three steps fail on purpose to contrast the SDK's retry behaviours. A plain Error is retried until it succeeds, a RetryableError backs off before retrying, and a FatalError is never retried.