anchor.diff:    static void cloneCb(var result) {
       //TODO(grv): to be implemented.
       print("clone successful");
  +    _completer.complete();
  +    _completer = null;
     }
   
  -  static void clone(entry, String url) {
  +  static bool isActive() {
  +    return (_completer != null)
  +  }
  +
  +  static Future clone(entry, String url) {
  +    if (isActive) {
  +      return new Future.error("Another git operation in progress.");
  +    }
   
       var arg = new js.JsObject.jsify({
         "entry": entry.toJs(),
  
positive.code:   // Javascript object to wrap.
    static js.JsObject jsGitSalt = js.context['gitSalt'];
    static int messageId = 1;
  
    static String genMessageId() {
      messageId++;
  
negative.code:       "arg": arg
      });
  
      _completer = new Completer();
      jsGitSalt.callMethod('postMessage', [message, cloneCb]);
      return _completer.future;
    }
  
    static void commitCb(var result) {
  