promise: Do not recursively throw errors