@@ -148,6 +148,76 @@ void main() {
148148 });
149149 }
150150 });
151+
152+ group ('subscriptionStream error callback' , () {
153+ test ('binary typed' , () async {
154+ var completer = Completer <void >();
155+ var stream = createErrorStream ();
156+ var sourceSubscription = stream.listen (null , cancelOnError: true );
157+ var subscriptionStream = SubscriptionStream (sourceSubscription);
158+
159+ void f (Object error, StackTrace stackTrace) {
160+ completer.complete ();
161+ }
162+
163+ subscriptionStream.listen ((_) {},
164+ onError: f,
165+ onDone: () => throw 'should not happen' ,
166+ cancelOnError: true );
167+ await completer.future;
168+ await flushMicrotasks ();
169+ });
170+
171+ test ('binary dynamic' , () async {
172+ var completer = Completer <void >();
173+ var stream = createErrorStream ();
174+ var sourceSubscription = stream.listen (null , cancelOnError: true );
175+ var subscriptionStream = SubscriptionStream (sourceSubscription);
176+
177+ subscriptionStream.listen ((_) {},
178+ onError: (error, stackTrace) {
179+ completer.complete ();
180+ },
181+ onDone: () => throw 'should not happen' ,
182+ cancelOnError: true );
183+ await completer.future;
184+ await flushMicrotasks ();
185+ });
186+
187+ test ('unary typed' , () async {
188+ var completer = Completer <void >();
189+ var stream = createErrorStream ();
190+ var sourceSubscription = stream.listen (null , cancelOnError: true );
191+ var subscriptionStream = SubscriptionStream (sourceSubscription);
192+
193+ void f (Object error) {
194+ completer.complete ();
195+ }
196+
197+ subscriptionStream.listen ((_) {},
198+ onError: f,
199+ onDone: () => throw 'should not happen' ,
200+ cancelOnError: true );
201+ await completer.future;
202+ await flushMicrotasks ();
203+ });
204+
205+ test ('unary dynamic' , () async {
206+ var completer = Completer <void >();
207+ var stream = createErrorStream ();
208+ var sourceSubscription = stream.listen (null , cancelOnError: true );
209+ var subscriptionStream = SubscriptionStream (sourceSubscription);
210+
211+ subscriptionStream.listen ((_) {},
212+ onError: (error) {
213+ completer.complete ();
214+ },
215+ onDone: () => throw 'should not happen' ,
216+ cancelOnError: true );
217+ await completer.future;
218+ await flushMicrotasks ();
219+ });
220+ });
151221}
152222
153223Stream <int > createStream () async * {
0 commit comments