title: Observing multiple controlEvent causes `Reentrancy anomaly was detected.` warning message
body: <p>I am new in RxSwift and today I face with a problem which I can't solve. I want to observe to <code>controlEvent</code>s in <code>UITextField</code>.</p>
  
  <p>Code:</p>
  
  <pre><code>textField.rx
      .controlEvent([.editingDidEndOnExit, .editingDidEnd])
      .subscribe(onNext: { [weak self] in
          // do stuff
      })
      .disposed(by: disposeBag)
  </code></pre>
  
  <p>I want to now when <code>textField</code> resigns to be first responder or user taps on <code>return</code> button. Code works fine when I perform a line: <code>textField.resignFirstResponder()</code> but when I tap on <code>return</code> button I get a warning message:</p>
  
  <blockquote>
    <p>⚠️ Reentrancy anomaly was detected.
    Debugging: To debug this issue you can set a breakpoint in /Users/laxmorek/Documents/projects/meetingapplication-ios/Pods/RxSwift/RxSwift/Rx.swift:97 and observe the call stack.
    Problem: This behavior is breaking the observable sequence grammar. <code>next (error | completed)?</code>
        This behavior breaks the grammar because there is overlapping between sequence events.
        Observable sequence is trying to send an event before sending of previous event has finished.
    Interpretation: This could mean that there is some kind of unexpected cyclic dependency in your code,
        or that the system is not behaving in the expected way.
    Remedy: If this is the expected behavior this message can be suppressed by adding <code>.observeOn(MainScheduler.asyncInstance)</code>
        or by enqueing sequence events in some other way.</p>
  </blockquote>
  
  <p>I don't understand this. </p>
  
  <ul>
  <li>What is proper way to observe multiple <code>controlEvent</code> in <code>RxSwift</code>?</li>
  <li>Why I get this warning message? What is wrong with my observing setup?</li>
  </ul>
  
  <h3>Edit</h3>
  
  <p>Temporary workaround is that I split my code like this:</p>
  
  <pre><code>textField.rx
      .controlEvent(.editingDidEndOnExit)
      .subscribe(onNext: { [weak self] in
          self?.isSelected = false
      })
      .disposed(by: disposeBag)
  textField.rx
      .controlEvent(.editingDidEnd)
      .subscribe(onNext: { [weak self] in
          self?.isSelected = false
      })
      .disposed(by: disposeBag)
  </code></pre>
  
  <p>But this code duplication does not look very well. :/</p>