Some W3CActions: releaseW3CActions, performActions, crashing my tests

Having made to three days using Appium (really very useful) I am encountering a problem with releaseW3CActions and driver.performActions

Using the example from http://appium.io/docs/en/commands/interactions/actions/

const driver = wd.promiseChainRemote("http://localhost:4723/wd/hub");

Is how I initialise the driver. I successfully log into our app using elementByAccessibilityId, and elementByXPath.

Then when I call: driver.performActions (the first example on that page) I get the error:
TypeError: driver.performActions is not a function.

Commenting out that code I can happily run the touchInput example (included below in all its verbosity) but when I call: await driver.releaseW3CActions(); I get the following error:
(I have removed the stack trace)

Error: [releaseW3CActions()] Error response status: 9, , UnknownCommand - The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource. Selenium error: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
: 
: 
  message: '[releaseW3CActions()] Error response status: 9, , UnknownCommand - The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource. Selenium error: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource',
  status: 9,
  cause: {
    status: 9,
    value: {
      error: 'unknown command',
      message: 'The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource',
      stacktrace: ''
    },
    sessionId: '90fb10d6-ba21-46c5-a22b-0b9162d2c43c'
  },
  inspect: [Function],
  'jsonwire-error': {
    status: 9,
    summary: 'UnknownCommand',
    detail: 'The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource.'
  }
}

I feel I may be missing something important!

The complete second test that is completed correctly (from the link above)

    var actions = new wd.W3CActions(driver);
    var touchInput = actions.addTouchInput();
    touchInput.pointerMove({duration: 0, x: 100, y: 100});
    touchInput.pointerDown({button: 0});
    touchInput.pause({duration: 500});
    touchInput.pointerMove({duration: 1000, origin: 'pointer', x: -50, y: 100});
    touchInput.pointerUp({button: 0});
    var secondTouchInput = actions.addTouchInput();
    secondTouchInput.pointerMove({duration: 0, x: 200, y: 200});
    secondTouchInput.pointerDown({button: 0});
    secondTouchInput.pause({duration: 300});
    secondTouchInput.pointerMove({duration: 1000, origin: 'pointer', x: 50, y: 100});
    secondTouchInput.pointerUp({button: 0});
    await actions.perform();