@@ -276,11 +276,11 @@ class Registrator {
276276 request_sender.send ();
277277 }
278278
279- void unregister (bool unregister_all) {
279+ Future < bool > unregister (bool unregister_all) async {
280280 if (_registered == false ) {
281281 logger.d ('already unregistered' );
282282
283- return ;
283+ return true ;
284284 }
285285
286286 _registered = false ;
@@ -314,11 +314,14 @@ class Registrator {
314314 extraHeaders);
315315
316316 EventManager handlers = EventManager ();
317+ Completer <bool > completer = Completer <bool >();
317318 handlers.on (EventOnRequestTimeout (), (EventOnRequestTimeout value) {
318319 _unregistered (null , DartSIP_C .CausesType .REQUEST_TIMEOUT );
320+ completer.complete (false );
319321 });
320322 handlers.on (EventOnTransportError (), (EventOnTransportError value) {
321323 _unregistered (null , DartSIP_C .CausesType .CONNECTION_ERROR );
324+ completer.complete (false );
322325 });
323326 handlers.on (EventOnAuthenticated (), (EventOnAuthenticated response) {
324327 // Increase the CSeq on authentication.
@@ -329,17 +332,20 @@ class Registrator {
329332 String status_code = event.response! .status_code.toString ();
330333 if (utils.test2XX (status_code)) {
331334 _unregistered (event.response);
335+ completer.complete (true );
332336 } else if (utils.test1XX (status_code)) {
333337 // Ignore provisional responses.
334338 } else {
335339 String cause = utils.sipErrorCause (event.response! .status_code);
336340 _unregistered (event.response, cause);
341+ completer.complete (true );
337342 }
338343 });
339344
340345 RequestSender request_sender = RequestSender (_ua, request, handlers);
341346
342347 request_sender.send ();
348+ return completer.future;
343349 }
344350
345351 void close () {
0 commit comments