// tslint:disable
async function returnsPromise() {
  return false;
}

function neverHitsElse() {
  if (returnsPromise()) {
    return true;
  } else {
    return false;
  }
}

async function asyncNeverHitsElse() {
  if (returnsPromise()) {
    return true;
  } else {
    return false;
  }
}

function detectsFunctionCalls() {
  const ternary = returnsPromise() ? 'always' : 'never';

  while (returnsPromise()) {
    // stuck in this loop
    break;
  }

  const binaryExpressionBarBar = returnsPromise() || 'other thing';
  const binaryExpressionAndAnd = returnsPromise() && 'other thing';
}

function detectsPropertyAccesses() {
  const prom = returnsPromise();

  const ternary = prom ? 'always' : 'never';

  while (prom) {
    // stuck in this loop
    break;
  }

  const binaryExpressionBarBar = prom || 'other thing';
  const binaryExpressionAndAnd = prom && 'other thing';
}
