/// <summary> /// TBD /// </summary> /// <param name="self">TBD</param> public static void Pump(this IPump self) { try { while (self.TransferState.IsExecutable) { self.CurrentAction(); } } catch (Exception e) { self.PumpFailed(e); } if (self.IsPumpFinished) { self.PumpFinished(); } }