alexa-ability-timeout
v0.2.4
Published
An alexa-ability middleware to prevent stalled requests.
Downloads
14
Maintainers
Readme
alexa-ability-timeout
Example
import { Ability, events } from 'alexa-ability';
import { handleAbility } from 'alexa-ability-lambda-handler';
import { timeout, TimeoutError } from 'alexa-ability-timeout';
const app = new Ability({
applicationId: 'my-application-id'
});
app.use(timeout(5000)); // 5 seconds
// slow, cancelable operation.
// Listen for the `timeout` event on the request and cancel the request appropriately
app.on(e.launch, function(req, next) {
const cancel = slowCancelableOperation(function(output) {
req.say(output).end(); // send output
});
req.on('timeout', cancel);
});
// slow, operation that we can't cancel.
// just check the `req.timedOut` property to see if it is safe to continue
app.on(e.end, function(req, next) {
slowOperation(function(output) {
if (req.timedOut) return; // halt if timed out
req.say(output).end(); // otherwise send output
});
});
app.onError(function(err, req, next) {
if (err instanceof TimeoutError) {
req.say('Sorry, that took to long. Please try again.').send();
} else {
req.say('Sorry, something went wrong. Please try again later.').end();
}
});
export const handler = handleAbility(app);
API
timeout(ms) -> middleware
Creates a middleware function that times out the request after
the given ms
have passed.
req.clearTimeout()
A function to stop the timeout completely.
req.timedOut
A boolean indicating whether the request has timed out.