throttles items from the current Observable by first emitting the next item from upstream, then periodically emitting the latest item (if any) when the specified timeout elapses between them
If no items were emitted from the upstream during this timeout phase, the next upstream item is emitted immediately and the timeout window starts from then.
Multiple overloads are available which allows specifying if the very last item (if any) should be emitted upon termination, which scheduler to use and to
have a callback for the items dropped.