ignoreOutput() calls receiveRequest twice

When using ignoreOutput() to ignore all outputs from upstream publisher receiveRequest closure calls twice. Can anyone explain why does it happen?

Example:

let numSubject = PassthroughSubject<Int, Never>()

let timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { _ in
  numSubject.send((1 ... 5).randomElement()!)
}

let cancellable = numSubject.eraseToAnyPublisher()
  .handleEvents(
    receiveSubscription: { subscription in
      print("receiveSubscription")
    }, receiveOutput: { _ in
      print("receiveOutput")
    }, receiveCompletion: { completion in
      print("receiveCompletion")
    }, receiveCancel: {
      print("receiveCancel")
    }, receiveRequest: { request in
      print("receiveRequest \(request)")
    })
  .ignoreOutput()
  .sink(receiveCompletion: {print("completion: \($0)")},
        receiveValue: {print("value \($0)")})

Output:
receiveSubscription
receiveRequest unlimited
receiveRequest unlimited
receiveOutput
receiveOutput
...

If using example from docs everything is good:

let numbers = [1, 2, 3]
let cancellable = numbers.publisher
  .handleEvents(
    receiveSubscription: { subscription in
      print("receiveSubscription")
    }, receiveOutput: { _ in
      print("receiveOutput")
    }, receiveCompletion: { completion in
      print("receiveCompletion")
    }, receiveCancel: {
      print("receiveCancel")
    }, receiveRequest: { request in
      print("receiveRequest \(request)")
    })
  .ignoreOutput()
  .sink(receiveCompletion: {print("completion: \($0)")},
        receiveValue: {print("value \($0)")})

Output:
receiveSubscription
receiveRequest unlimited
receiveOutput
receiveOutput
receiveOutput
receiveCompletion
completion: finished