Near complete re-write. Removed dependency on Tomb. Now we only spawn a new goroutine if retry fails. Added a bunch of helper methods