Compose (function(): Promise)es and auto lift non-promise returners to allow queued IO w/o all the boilerplate.