anchor.diff:                "version" : nextVersion
               }));
           }
  -      }).then((_) => _release_locks());
  +      },
  +      onError: (e) {
  +        print(e);
  +        // Errors thrown by MongoDatabase are Map objects with fields err, code,
  +        // ...
  +        throw new MongoException(e);
  +      }
  +      ).then((_) => _release_locks());
     }
   
     Future remove(String _id, String author) {
  
positive.code:           "action" : "add",
            "author" : author,
            "version" : nextVersion
          })).then((_) => _release_locks());
    }
  
    Future change(Map data, String author) {
      num nextVersion;
      Map newRecord;
      return _get_locks().then((_) => collection.findOne({"_id" : data['_id']}))
        .then((Map record) {
          if(record == null) {
            return true;
          } else {
            return _maxVersion.then((version) {
              nextVersion = version + 1;
  
negative.code:               "version" : nextVersion
            }));
          }
        },
        onError: (e) {
          print(e);
          // Errors thrown by MongoDatabase are Map objects with fields err, code,
          // ...
          throw new MongoException(e);
        }
        ).then((_) => _release_locks());
    }
  
    Future<Map> diffFromVersion(num version) {
  