anchor.diff:      Map<String, dynamic> params,
       Duration timeout = _kRpcTimeout,
     }) async {
  -    final Future<Map<String, dynamic>> future = _peer.sendRequest(
  -      function,
  -      params ?? <String, dynamic>{},
  -    );
  -    if (timeout == null) {
  -      return future;
  -    }
  -    return future.timeout(timeout, onTimeout: () {
  +    final Map<String, dynamic> result = await _peer
  +        .sendRequest(function, params ?? <String, dynamic>{})
  +        .timeout(timeout, onTimeout: () {
         throw new TimeoutException(
           'Peer connection timed out during RPC call',
           timeout,
         );
       });
  +    return result;
     }
   
     /// Returns a list of [FlutterView] objects running across all Dart VM's.
  
positive.code:     WebSocket socket;
      json_rpc.Peer peer;
      try {
        socket = await WebSocket.connect(uri.toString());
        peer = new json_rpc.Peer(new IOWebSocketChannel(socket).cast())..listen();
        return peer;
      } on HttpException catch (e) {
  
negative.code:       await socket?.close();
        rethrow;
      } catch (e) {
        _log.fine('Dart VM connection failed $e: ${e.message}');
        // Other unknown errors will be handled with reconnects.
        await peer?.close();
        await socket?.close();
  