anchor.diff:    Completer completer = new Completer();
     File file = new File(name);
   
  -  Future<File> createFile = file.create();
  -  createFile.then((File value) {
  -    if (value != null) {
  -      // this fails on OSX... why?
  -      Future<File> writeFile = file.writeAsString(contents, encoding:Encoding.UTF_8, mode:FileMode.WRITE);
  -
  -      // this works on OSX but not on win...
  -      // Future<File> writeFile = file.writeAsString(contents, FileMode.WRITE);
  -      writeFile.then((File value) {
  -        if (value != null) {
  -          completer.complete(value);
  -        } else {
  -          completer.complete(false);
  -        }
  -      });
  -    } else {
  -      completer.complete(false);
  -    }
  -  });
  +  try {
  +    Future<File> createFile = file.create();
  +    createFile.then((File value) {
  +      if (value != null) {
  +        // this fails on OSX... why?
  +        Future<File> writeFile = file.writeAsString(contents, encoding:Encoding.UTF_8, mode:FileMode.WRITE);
  +
  +        // this works on OSX but not on win...
  +        // Future<File> writeFile = file.writeAsString(contents, FileMode.WRITE);
  +        writeFile.then((File value) {
  +          if (value != null) {
  +            completer.complete(value);
  +          } else {
  +            completer.complete(false);
  +          }
  +        });
  +      } else {
  +        completer.complete(false);
  +      }
  +    });
  +  } on Exception catch (e) {
  +    completer.completeException(e);
  +  }
     return completer.future;
   }
   
   Future<dynamic> createDirectory(String path) {
     Completer completer = new Completer();
     Directory dir = new Directory(path);
  -  dir.create().then((Directory dir) {
  -    if (dir != null) {
  -      completer.complete(dir);
  -    } else {
  -      completer.complete(false);
  -    }
  -  });
  +  try {
  +    Future<Directory> dirFuture = dir.create();
  +    dirFuture.then((Directory dir) {
  +      if (dir != null) {
  +        completer.complete(dir);
  +      } else {
  +        completer.complete(false);
  +      }
  +    });
  +  } on Exception catch (e) {
  +    completer.completeException(e);
  +  }
     return completer.future;
   }
   
  
positive.code: 
         Future<bool> webFuture = prompt('generate content for a base web app?');
         webFuture.then((bool value) {
           if (value) {
             createDirectory('${projectPath}/web').then((Directory dir) {
               if (dir != null) {
                 Future<bool> dartFile = createFile('${projectPath}/web/${projectName}.dart', TEMPLATE_DART_WEB);
  
negative.code: 
    DirectoryLister lister = dir.list(recursive:true);
  
    lister.onError = (e) {
      print('an error occured while listing the directory:\n $e');
    };
    lister.onDir  = (String dir) {
      if (projectPath == dir) {
        existing = new File(dir);
  