title: PromiseKit 6.0 passing catched errors to caller
body: <p>According to migration guide PromiseKit 6.x changed his policy about <code>catch</code> blocks. In PMK 4 <code>catch</code> returned the promise it was attached to. Now <code>catch</code> is a chain- terminator. I understand why these changes were made but...</p>
  
  <p>In my codebase (connected with PK4) I take some advantages from that <code>catch</code> returns promise.</p>
  
  <pre><code>func loginAndSync(withServerAddress address: String, port: String) -&gt; Promise&lt;()&gt; {
      synchronizationService.stopAllRunningSingleSynchronizations()
  
      return
          authorizationService.save(serverAddress: address, andPort: port)
              .then {
                  self.synchronizationService.startSingleFullSynchronization()
              }
              .then {
                  self.authorizationService.markAsServerSynced()
              }
              .catch { error in
                  log.error(error)
                  _ = self.authorizationService.markAsServerUnsynced()
              }
  }
  </code></pre>
  
  <p>In this function I make some logic which is in some cases failable. In case of error <code>catch</code> block should make some logic but I want to also send to <code>loginAndSync</code> function`s caller a result of this promise (fulfill or reject). Above function can be called for example by ViewController and in ViewController I want to show for example Error or Success Dialog.</p>
  
  <p>This is a reason where I need a two <code>catch</code>es for one Promise-chain. One for <code>authorizationService</code> and one for <code>UI</code>.</p>
  
  <p>Is there any workaround in PromiseKit6 to achieve this? </p>
  
  <h3>Edit</h3>
  
  <p>I found two solutions (workarounds). I have created two answers to separate them. Future readers can decide which one is better or provide new one.</p>