anchor.diff:        container.children.add(lineElement);
       }
   
  +    SparkDialogButton okButton = _okCancelDialog.getElement('#okText');
       _okCancelDialog.getElement('#okText').text = okButtonLabel;
  +
  +    if (okAction != null) {
  +      okButton.onClick.listen((_) {
  +        // Ensures that errorDialog closes before the action.
  +        Timer.run(() {
  +          okAction();
  +        });
  +      });
  +    }
   
       _okCancelCompleter = new Completer();
       _okCancelDialog.show();
  
positive.code: 
    void _handleAuthError(context) {
      String message = 'Authorization error. Bad username or password.';
      Function errorAction = () {
        _showAuthDialog(context);
      };
      spark.askUserOkCancel(message,
          okButtonLabel: 'Login Again', title: 'Push failed');
    }
  
    void _push() {
  
negative.code:   Completer<bool> _okCancelCompleter;
  
    Future<bool> askUserOkCancel(String message,
        {String okButtonLabel: 'OK', String title: "", Function okAction}) {
      // TODO(ussuri): Polymerize.
      if (_okCancelDialog == null) {
        _okCancelDialog = createDialog(getDialogElement('#okCancelDialog'));
  