anchor.diff:        if (handler != null) {
           _log.info('Attempting recovery on "${e.status}"');
           await handler(e);
  -        return command(action, target: target, params: params, signal: signal);
  +        return await command(
  +          action,
  +          target: target,
  +          params: params,
  +          signal: signal,
  +        );
         }
         rethrow;
  +    } finally {
  +      if (wrapped) {
  +        (signal as _MultiSignaler)._reallyClose();
  +      }
       }
     }
   }
  
positive.code:         );
        }
  
        request.signal?._close();
      }
    }
  }
  
  typedef ErrorHandler = Future<void> Function(RpcError e);
  
  class RpcNodeSession {
    final RpcSession _rpc;
  
negative.code:   final _recv = StreamController<Signal>();
  
    Stream<Signal> get signals => _recv.stream;
  
    Stream<String> get _sendStream => _send.stream;
  
    void cancel() {
      _send.add('cancel');
  