A grown-up version of Node's child_process. exec is really useful, but it suffers many limitations. This is an es7 (async/await) implementation of exec that uses spawn under the hood. It takes care of wrapping commands and arguments so we don't have to care about escaping spaces. It can also return stdout/stderr even when the command fails, or times out. Importantly, it's also not susceptible to max buffer issues. Most of these are self-explanatory. ignoreOutput is useful if you have a very chatty process whose output you don't care about and don't want to add it to the memory consumed by your program.