anchor.diff:  
       try {
         jsonStr = JSON.encode(json);
  -    } catch (e) {
  -      PinLogger.instance.shout('[PinUtility] writeJsonFile: Error in encoding JSON obj: ${json}');
  -      completer.complete(null);
  +    } catch (e, trace) {
  +      handleError(e, trace, message: '[PinUtility] writeJsonFile: Error in encoding JSON obj: ${json}');
  +      completer.completeError(e, trace);
       }
   
  -    (new File(path)).writeAsString(jsonStr).then((_) {
  +    (new File(path)).writeAsString(jsonStr)
  +    .then((_) {
         completer.complete(_);
  +    })
  +    .catchError((e, trace) {
  +      PinUtility.handleError(e, trace);
  +      completer.completeError(e, trace);
       });
   
       return completer.future;
  
positive.code:       if (exists) {
          completer.complete(true);
        } else {
          dir.create(recursive: true).then(() {
            completer.complete(true);
          }).catchError((e) {
            handleError(e);
            completer.complete(false);
          });
        }
      });
    }
  
    static void handleError(Exception e, StackTrace trace, {String message: null}) {
  
negative.code:     String fileContent = '';
  
      if (file.existsSync()) {
        try {
          fileContent = new File(path).readAsStringSync();
        } catch (e, trace) {
          handleError(e, trace);
        }
      } else {
        PinLogger.instance.warning('[PinUtility] readJsonFileSync: Target file does not exist or is not file: ${path}');
      }
  