restartStream method
Tears down the current stream and immediately starts a fresh one. Increments the internal epoch so in-flight pushes from the old stream are dropped instead of landing in the new controller/completer.
Implementation
Resolvable<Unit> restartStream() {
return stopStream().then((_) => _startStream()).flatten();
}