anchor.diff:  import 'dart:io';
   import 'dart:math';
   import 'package:useful/socket_jsonizer.dart';
  +
  +class LockRequestorPipeException implements Exception {
  +
  +  final String message;
  +
  +  const LockRequestorPipeException([String this.message = ""]);
  +
  +  String toString() => "LockRequestor exception: $message";
  +}
   
   class LockRequestor {
   
  
positive.code:   LockRequestor(this.url, this.port);
  
    Future init() =>
        Socket.connect(url, port)
          .then((Socket socket) => _lockerSocket = socket)
          .then((_) => _initListeners());
  
    _initListeners() {
      ss = toJsonStream(_lockerSocket).listen((Map resp) {
  
negative.code:       } else {
          throw new Exception("Unknown response from _lockerSocket");
        }
      }, onError: (e) => throw new LockRequestorPipeException(e.toString()));
    }
  
    static Future<LockRequestor> connect(url, port) =>
      Socket.connect(url, port).then((Socket socket) => new LockRequestor.fromSocket(socket))
        .catchError((e,s) => throw new LockRequestorPipeException("LockRequestor was unable to connect to url: $url, port: $port, (is Locker running?)"));
  
    // Obtains lock and returns unique ID for the holder
    Future<String> _getLock(String lockType) {
  