we should handle `err != nil`