Returns a Koa middleware function that varies its async logic based on if the
given middleware function declares at least 3 parameters, i.e. includes
the `next` callback function
function koaConnect(connectMiddleware) {
  const handler = connectMiddleware.length < 3
    ? noCallbackHandler
    : withCallbackHandler
  return function koaConnect(ctx, next) {
    return handler(ctx, connectMiddleware, next)
  }
}