title: Swift Combine: `append` which does not require output to be equal?
body: <p>Using Apple's Combine I would like to append a publisher <code>bar</code> after a first publisher <code>foo</code> has finished (ok to constrain <code>Failure</code> to <code>Never</code>). Basically I want <a href="http://reactivex.io/RxJava/javadoc/io/reactivex/Completable.html#andThen-io.reactivex.ObservableSource-" rel="nofollow noreferrer">RxJava's <code>andThen</code></a>.</p>
  
  <p>I have something like this:</p>
  
  <pre class="lang-swift prettyprint-override"><code>let foo: AnyPublisher&lt;Fruit, Never&gt; = /* actual publisher irrelevant */
  
  let bar: AnyPublisher&lt;Fruit, Never&gt; = /* actual publisher irrelevant */
  
  // A want to do concatenate `bar` to start producing elements
  // only after `foo` has `finished`, and let's say I only care about the
  // first element of `foo`.
  let fooThenBar = foo.first()
      .ignoreOutput()
      .append(bar) // Compilation error: `Cannot convert value of type 'AnyPublisher&lt;Fruit, Never&gt;' to expected argument type 'Publishers.IgnoreOutput&lt;Upstream&gt;.Output' (aka 'Never')`
  </code></pre>
  
  <p>I've come up with a solution, I think it works, but it looks very ugly/overly complicated.</p>
  
  <pre class="lang-swift prettyprint-override"><code>let fooThenBar = foo.first()
      .ignoreOutput()
      .flatMap { _ in Empty&lt;Fruit, Never&gt;() }
      .append(bar) 
  </code></pre>
  
  <p>I'm I missing something here?</p>
  
  <h1>Edit</h1>
  
  <p>Added a nicer version of my initial proposal as an answer below. Big thanks to @RobNapier!</p>