fix path completion
mass refactoring

still not really happy with the way errors propagate through the promise
chain. In the cli executable I had errors being caught and causing
parent promises to be rejected when arguable they did their job. This is
something I need to figure within my promise implementation though.
FUUCKK promises are so tempting yet so edge casey.